
- 将MeDynamicFeature重命名为MeFeature,并在MainFeature中进行相应更新。 - 更新MainFeature的状态管理,整合用户动态相关逻辑。 - 新增MeFeature以管理用户信息和动态加载,提升代码结构清晰度。 - 更新MainView和MeView以适应新的MeFeature,优化用户体验。 - 删除冗余的MeDynamicView,简化视图结构,提升代码可维护性。
57 lines
2.2 KiB
Swift
57 lines
2.2 KiB
Swift
import SwiftUI
|
|
import ComposableArchitecture
|
|
|
|
struct MainView: View {
|
|
let store: StoreOf<MainFeature>
|
|
|
|
var body: some View {
|
|
WithViewStore(self.store, observe: { $0 }) { viewStore in
|
|
NavigationStack {
|
|
GeometryReader { geometry in
|
|
ZStack {
|
|
// 背景图片
|
|
Image("bg")
|
|
.resizable()
|
|
.aspectRatio(contentMode: .fill)
|
|
.frame(maxWidth: .infinity, maxHeight: .infinity)
|
|
.clipped()
|
|
.ignoresSafeArea(.all)
|
|
// 主内容
|
|
ZStack {
|
|
switch viewStore.selectedTab {
|
|
case .feed:
|
|
FeedListView(store: store.scope(
|
|
state: \.feedList,
|
|
action: \.feedList
|
|
))
|
|
.transition(.opacity)
|
|
case .other:
|
|
MeView(
|
|
store: store.scope(
|
|
state: \.me,
|
|
action: \.me
|
|
)
|
|
)
|
|
.transition(.opacity)
|
|
}
|
|
}
|
|
.frame(maxWidth: .infinity, maxHeight: .infinity)
|
|
// 底部导航栏
|
|
VStack {
|
|
Spacer()
|
|
BottomTabView(selectedTab: viewStore.binding(
|
|
get: { Tab(rawValue: $0.selectedTab.rawValue) ?? .feed },
|
|
send: { MainFeature.Action.selectTab(MainFeature.Tab(rawValue: $0.rawValue) ?? .feed) }
|
|
))
|
|
}
|
|
.padding(.bottom, geometry.safeAreaInsets.bottom + 60)
|
|
}
|
|
}
|
|
}
|
|
.onAppear {
|
|
viewStore.send(.onAppear)
|
|
}
|
|
}
|
|
}
|
|
}
|