
- 在APIEndpoints.swift中新增publishFeed端点以支持发布动态。 - 新增PublishFeedRequest和PublishFeedResponse模型,处理发布请求和响应。 - 在EditFeedFeature中实现动态编辑功能,支持用户输入和发布内容。 - 更新CreateFeedView和EditFeedView以集成新的发布功能,提升用户体验。 - 在Localizable.strings中添加相关文本的本地化支持,确保多语言兼容性。 - 优化FeedListView和FeedView以展示最新动态,增强用户交互体验。
75 lines
3.1 KiB
Swift
75 lines
3.1 KiB
Swift
import SwiftUI
|
|
import ComposableArchitecture
|
|
|
|
struct FeedListView: View {
|
|
let store: StoreOf<FeedListFeature>
|
|
|
|
var body: some View {
|
|
WithViewStore(self.store, observe: { $0 }) { viewStore in
|
|
GeometryReader { geometry in
|
|
ZStack {
|
|
// 背景图片
|
|
Image("bg")
|
|
.resizable()
|
|
.aspectRatio(contentMode: .fill)
|
|
.frame(maxWidth: .infinity, maxHeight: .infinity)
|
|
.clipped()
|
|
.ignoresSafeArea(.all)
|
|
VStack(alignment: .center, spacing: 0) {
|
|
// 顶部栏
|
|
HStack {
|
|
Spacer(minLength: 0)
|
|
Spacer(minLength: 0)
|
|
Text(NSLocalizedString("feedList.title", comment: "Enjoy your Life Time"))
|
|
.font(.system(size: 22, weight: .semibold))
|
|
.foregroundColor(.white)
|
|
.frame(maxWidth: .infinity, alignment: .center)
|
|
Spacer(minLength: 0)
|
|
Button(action: {
|
|
viewStore.send(.editFeedButtonTapped)
|
|
}) {
|
|
Image("add icon")
|
|
.resizable()
|
|
.frame(width: 36, height: 36)
|
|
}
|
|
}
|
|
.padding(.horizontal, 20)
|
|
.padding(.top, geometry.safeAreaInsets.top)
|
|
// 其他内容
|
|
Image(systemName: "heart.fill")
|
|
.font(.system(size: 60))
|
|
.foregroundColor(.red)
|
|
.padding(.top, 40)
|
|
Text(NSLocalizedString("feedList.slogan", comment: "The disease is like a cruel ruler,\nand time is our most precious treasure.\nEvery moment we live is a victory\nagainst the inevitable."))
|
|
.font(.system(size: 16))
|
|
.multilineTextAlignment(.center)
|
|
.foregroundColor(.white.opacity(0.9))
|
|
.padding(.horizontal, 30)
|
|
.padding(.bottom, 30)
|
|
Spacer()
|
|
}
|
|
.frame(maxWidth: .infinity, alignment: .top)
|
|
}
|
|
}
|
|
.onAppear {
|
|
viewStore.send(.onAppear)
|
|
}
|
|
.sheet(isPresented: viewStore.binding(
|
|
get: \.isEditFeedPresented,
|
|
send: { $0 ? .editFeedButtonTapped : .editFeedDismissed }
|
|
)) {
|
|
EditFeedView(
|
|
onDismiss: {
|
|
viewStore.send(.editFeedDismissed)
|
|
},
|
|
store: Store(
|
|
initialState: EditFeedFeature.State()
|
|
) {
|
|
EditFeedFeature()
|
|
}
|
|
)
|
|
}
|
|
}
|
|
}
|
|
}
|