5 SwiftUI技巧,让你的代码更干净10倍
发布: (2026年2月1日 GMT+8 02:36)
2 min read
原文: Dev.to
Source: Dev.to
1. 创建可复用的 ViewModifier
不要一次又一次地重复相同的修饰符,而是定义一个自定义的 ViewModifier 并通过视图扩展公开它。
struct PrimaryButtonStyle: ViewModifier {
func body(content: Content) -> some View {
content
.font(.headline)
.foregroundColor(.white)
.padding()
.background(Color.blue)
.cornerRadius(10)
}
}
extension View {
func primaryButtonStyle() -> some View {
modifier(PrimaryButtonStyle())
}
}
// Usage
Text("Hello")
.primaryButtonStyle()
2. 即使只使用一次也要抽取子视图
大型视图的主体很难快速阅读。将不同的部分抽取到各自的 View 结构体中。
struct ProfileView: View {
var body: some View {
VStack {
ProfileHeader()
ProfileStats()
ProfileActions()
}
}
}
3. 使用 @ViewBuilder 处理条件内容
将分支 UI 逻辑封装在带有 @ViewBuilder 标记的计算属性或函数中。
@ViewBuilder
var content: some View {
if isLoggedIn {
HomeView()
} else {
LoginView()
}
}
4. 集中管理间距数值
为间距常量定义唯一的真相来源,以保持布局的一致性。
enum Spacing {
static let xs: CGFloat = 4
static let sm: CGFloat = 8
static let md: CGFloat = 16
static let lg: CGFloat = 24
}
VStack(spacing: Spacing.md) {
Text("Title")
}
5. 提供完整的预览
在预览画布中展示视图的多种变体,包括暗模式支持。
struct ButtonView_Previews: PreviewProvider {
static var previews: some View {
Group {
ButtonView(title: "Normal")
ButtonView(title: "Dark")
.preferredColorScheme(.dark)
}
}
}
可直接使用的入门套件
如果你想要一个已经融合这些模式的项目,查看 SwiftUI Starter Kit Pro ——它可以为每个项目节省数十小时的工作时间。