ContentUIView.swift 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. //
  2. // ContentUIView.swift
  3. // fiveConstant
  4. //
  5. // Created by 李建 on 2023/1/29.
  6. //
  7. import Foundation
  8. import SwiftUI
  9. import SwiftyUserDefaults
  10. struct ContentUIView: View {
  11. @StateObject var viewRouter: ViewRouter
  12. @EnvironmentObject var progressState: ProgressState;
  13. @StateObject var userInfoData: UserInfoData = UserInfoData()
  14. var body: some View {
  15. GeometryReader { geometry in
  16. NavigationView {
  17. VStack {
  18. switch viewRouter.currentPage {
  19. case .home:
  20. IndexUIView(userInfoData: userInfoData)
  21. case .my:
  22. MyUIView()
  23. case .found:
  24. FoundUIView()
  25. case .room:
  26. RoomUIView()
  27. }
  28. Spacer()
  29. ZStack {
  30. HStack {
  31. TabBarIcon(viewRouter: viewRouter, assignedPage: .home,
  32. width: geometry.size.width/4, height: geometry.size.height/32,
  33. systemIconName: "house.fill", tabName: "首页")
  34. .frame(maxWidth: .infinity)
  35. TabBarIcon(viewRouter: viewRouter, assignedPage: .room,
  36. width: geometry.size.width/4, height: geometry.size.height/32,
  37. systemIconName: "entry.lever.keypad.fill", tabName: "房间")
  38. .frame(maxWidth: .infinity)
  39. TabBarIcon(viewRouter: viewRouter, assignedPage: .found,
  40. width: geometry.size.width/4, height: geometry.size.height/32,
  41. systemIconName: "magnifyingglass.circle.fill", tabName: "发现")
  42. .frame(maxWidth: .infinity)
  43. TabBarIcon(viewRouter: viewRouter, assignedPage: .my,
  44. width: geometry.size.width/4, height: geometry.size.height/32,
  45. systemIconName: "person.crop.circle.fill", tabName: "我的")
  46. .frame(maxWidth: .infinity)
  47. }
  48. // 将宽度设置为父视图的宽度大小,高度需要微调,可以设置为具体是数值,比如 100
  49. .frame(width: geometry.size.width, height: geometry.size.height/9)
  50. .background(Color.gray.opacity(0.05))
  51. }
  52. }
  53. .ignoresSafeArea(edges: .bottom)
  54. }.navigationBarHidden(true)
  55. }.onAppear {
  56. HttpRequest<UserInfo>.loadData(target: UserApi.curent) { returnData in
  57. Defaults[\.phone] = returnData.phone
  58. Defaults[\.defaultHomeId] = returnData.default_home_id
  59. Defaults[\.realName] = returnData.real_name
  60. Defaults[\.userName] = returnData.user_name
  61. Defaults[\.photo] = returnData.photo
  62. userInfoData.photo = returnData.photo
  63. }
  64. }
  65. }
  66. }