~/VibeHandbook
$39

应用 / 移动端

developer.apple.com

SwiftUI

是什么

SwiftUI 是 Apple 的声明式 UI 框架,用一套共享的工具集在所有 Apple 平台上构建界面。你不再命令式地改变视图,而是描述给定状态下 UI 应当呈现的样子,框架会随着状态变化让屏幕保持同步。它在 Xcode 中运行,配有实时预览画布,让你在键入时就能看到变化。

优势

  • 声明式且简洁——比起较早的 UIKit/AppKit 方式,样板代码大幅减少。
  • 通过 @State@Binding 和 observation 实现由状态驱动的自动更新。
  • 实时预览让布局迭代既快速又直观。
  • 一套框架以共享代码面向 iPhone、iPad、Mac、Watch 和 TV。
  • 内置对动画、无障碍、深色模式和动态字体的支持。

权衡取舍

  • 较新的 API 需要较新的操作系统版本,如果你必须支持旧设备,这可能是个问题。
  • 对于高度定制或非同寻常的 UI,有时仍需退回到 UIKit/AppKit 互操作。
  • 某些行为不透明,调试布局或状态问题可能令人沮丧。
  • 它演进迅速,因此示例可能在不同操作系统版本之间过时。

最适合

当你想快速推进、保持代码库小巧并面向当前操作系统版本时,SwiftUI 是构建全新 Apple 平台应用的恰当选择。它与 Swift 的值类型和并发能力自然契合。

与 vibe coding 的契合度

SwiftUI 适合 AI 辅助构建,因为视图是小巧、可组合、自包含的——便于模型生成,也便于你在预览画布中验证。要求助手用 @State/@Observable 显式建模屏幕状态,把大视图拆成小的子视图,并以可标识(identifiable)的数据来驱动列表。为状态保留唯一的真实来源,让 binding 向下流动;这一条规则就能避免生成的 SwiftUI 代码中大部分的混乱。

import SwiftUI

struct CounterView: View {
    @State private var count = 0
    var body: some View {
        VStack {
            Text("\(count)").font(.largeTitle)
            Button("Add") { count += 1 }
        }
    }
}