Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • 第二部分:MVVM 在 SwiftUI 中的实现

第二部分:MVVM 在 SwiftUI 中的实现

第4章:设计 View 层

SwiftUI 的 View 协议与组件

1. View 协议基础

SwiftUI 的核心是 View 协议,它是所有用户界面组件的基石。任何符合 View 协议的类型都必须实现一个计算属性 body,用于描述视图的内容和布局。

protocol View {
    associatedtype Body: View
    var body: Self.Body { get }
}

2. 内置组件分类

SwiftUI 提供了丰富的内置组件,可分为以下几类:

  • 布局组件:VStack、HStack、ZStack、List、Grid
  • 控件组件:Button、TextField、Toggle、Slider
  • 容器组件:NavigationView、TabView、Group
  • 绘图组件:Shape、Path、Canvas

3. 自定义组件开发

通过组合基础组件可以创建可复用的自定义视图:

struct CardView: View {
    let title: String
    var body: some View {
        VStack {
            Text(title)
                .font(.headline)
            Divider()
            // 其他内容...
        }
        .padding()
        .background(Color.gray.opacity(0.1))
    }
}

4. 视图修饰符(Modifiers)

SwiftUI 通过链式调用修饰符来配置视图:

Text("Hello")
    .font(.title)
    .foregroundColor(.blue)
    .padding()

关键修饰符类型:

  • 布局修饰符:padding()、frame()、position()
  • 样式修饰符:font()、foregroundColor()、background()
  • 交互修饰符:onTapGesture()、onLongPressGesture()

5. 视图生命周期

SwiftUI 提供特定修饰符处理视图生命周期事件:

struct ContentView: View {
    var body: some View {
        Text("Hello")
            .onAppear {
                print("视图出现")
            }
            .onDisappear {
                print("视图消失")
            }
    }
}

6. 预览功能

PreviewProvider 协议支持实时预览:

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
            .previewDevice("iPhone 14")
            .previewDisplayName("iPhone 14")
    }
}

技术要点

  1. some View 的使用简化了返回复杂视图类型的声明
  2. 视图是值类型(Struct),依赖自动生成的 body 计算属性
  3. 所有修改都通过返回新视图实现,而非直接修改属性

最佳实践:保持视图简洁,将复杂逻辑分解为多个子视图,通过组合构建复杂界面。

Last Updated:: 4/25/25, 8:11 PM