
- 在FeedView中添加加号按钮,允许用户进行操作。 - 更新HomeView以支持全屏显示和更好的布局。 - 在MeView中优化用户信息展示,增加用户ID显示。 - 调整底部导航栏样式,提升视觉效果和用户体验。 - 确保视图在安全区域内适配,增强整体布局的适应性。
79 lines
2.0 KiB
Swift
79 lines
2.0 KiB
Swift
import SwiftUI
|
|
|
|
// MARK: - Tab 枚举
|
|
enum Tab: Int, CaseIterable {
|
|
case feed = 0
|
|
case me = 1
|
|
|
|
var title: String {
|
|
switch self {
|
|
case .feed:
|
|
return "动态"
|
|
case .me:
|
|
return "我的"
|
|
}
|
|
}
|
|
|
|
var iconName: String {
|
|
switch self {
|
|
case .feed:
|
|
return "feed unselected"
|
|
case .me:
|
|
return "me unselected"
|
|
}
|
|
}
|
|
|
|
var selectedIconName: String {
|
|
switch self {
|
|
case .feed:
|
|
return "feed selected"
|
|
case .me:
|
|
return "me selected"
|
|
}
|
|
}
|
|
}
|
|
|
|
// MARK: - BottomTabView 组件
|
|
struct BottomTabView: View {
|
|
@Binding var selectedTab: Tab
|
|
|
|
var body: some View {
|
|
HStack(spacing: 0) {
|
|
ForEach(Tab.allCases, id: \.rawValue) { tab in
|
|
Button(action: {
|
|
selectedTab = tab
|
|
}) {
|
|
Image(selectedTab == tab ? tab.selectedIconName : tab.iconName)
|
|
.resizable()
|
|
.aspectRatio(contentMode: .fit)
|
|
.frame(width: 30, height: 30)
|
|
.frame(maxWidth: .infinity)
|
|
}
|
|
.buttonStyle(PlainButtonStyle())
|
|
}
|
|
}
|
|
.frame(height: 60)
|
|
.padding(.horizontal, 16)
|
|
.background(
|
|
RoundedRectangle(cornerRadius: 30)
|
|
.fill(.ultraThinMaterial)
|
|
.overlay(
|
|
RoundedRectangle(cornerRadius: 30)
|
|
.stroke(Color.white.opacity(0.1), lineWidth: 0.5)
|
|
)
|
|
.shadow(
|
|
color: Color.black.opacity(0.34),
|
|
radius: 10.7,
|
|
x: 0,
|
|
y: 1.9
|
|
)
|
|
)
|
|
.padding(.horizontal, 15)
|
|
}
|
|
}
|
|
|
|
#Preview {
|
|
BottomTabView(selectedTab: .constant(.feed))
|
|
.background(Color.purple) // 预览时添加背景色以便查看效果
|
|
}
|