字节笔记本

2026年2月23日

SwiftUIViews:SwiftUI 完整视图用例学习指南

本文介绍 SwiftUIViews,一个专为 SwiftUI 学习者打造的开源项目,提供了所有 SwiftUI 基本视图的完整用例和中文解释,帮助开发者快速掌握 SwiftUI 开发。

项目简介

SwiftUIViews 是由 swiftui-from-zero 组织维护的开源学习项目,旨在解决 SwiftUI 学习者在阅读英文文档时遇到的困难。该项目基于 SwiftUI 官方文档实例,对所有 SwiftUI 控件视图的用例进行了系统总结,并配有详细的中文注释。

截至目前,该项目在 GitHub 上已获得 306 stars,拥有 51 forks,主要使用 Swift 语言编写。

核心特性

  • 25 个控件组件:涵盖 Button、Text、TextField、List、NavigationView 等所有常用控件
  • 10 个布局视图:包括 HStack、VStack、ZStack、Grid 等布局系统
  • 3 个颜色视图:提供颜色、渐变、形状等视觉效果组件
  • 中文注释:所有代码都配有详细的中文注释,降低学习门槛
  • 实时预览:配合 SwiftUI 预览功能,可边写代码边查看效果
  • 即用即查:每个控件都有独立的示例文件,方便快速查阅

项目结构

text
SwiftUIViews/
├── Controls/          # 控件视图(25个)
│   ├── Button.swift
│   ├── Text.swift
│   ├── TextField.swift
│   ├── List.swift
│   ├── NavigationView.swift
│   └── ...
├── Layout/            # 布局视图(10个)
├── Paints/            # 颜色视图(3个)
├── Other/             # 其他视图
└── img/               # 示例 GIF 动图

使用示例

Button 按钮

swift
import SwiftUI

struct BasicButton: View {
    var body: some View {
        VStack {
            // Button 需要一个 action 和一个 label
            // action 的类型是 () -> Void,即点击回调函数
            // label 是表示 Button 样式的视图
            Button(action: signIn) {
                Text("登录")
            }

            // 对于视图仅为文字的情况,可简化写法
            Button("登录", action: signIn)
        }
    }

    func signIn() {
        print("已登录")
    }
}

List 列表与按钮组合

swift
struct ListButton: View {
    @State var items: [Item] = [
        Item(title: "A"),
        Item(title: "B")
    ]

    var body: some View {
        List {
            ForEach(items) { item in
                Text(item.title)
            }
            // 容器中的按钮样式会随容器样式变化
            // 放在 List 中的按钮会呈现为列表单元样式
            Button("添加", action: addItem)
        }
    }

    struct Item: Identifiable {
        let id = UUID()
        let title: String
    }

    func addItem() {
        items.append(Item(title: "C"))
    }
}

上下文菜单按钮

swift
struct ContextMenuButton: View {
    @State var username: String = ""
    @State var tmp: String = ""

    var body: some View {
        Form {
            TextField("用户名", text: $username)
        }
        .contextMenu {
            // 长按输入框会弹出剪切、复制、粘贴选项
            Button("剪切", action: cut)
            Button("复制", action: copy)
            Button("粘贴", action: paste)
        }
    }

    func cut() { tmp = username; username = "" }
    func copy() { tmp = username }
    func paste() { username += tmp }
}

快速开始

环境要求

  • macOS 11.0+ / iOS 14.0+
  • Xcode 12.0+
  • Swift 5.3+

使用方法

  1. 克隆仓库
bash
git clone https://github.com/swiftui-from-zero/SwiftUIViews.git
  1. 打开项目
bash
cd SwiftUIViews
open SwiftUIViews.xcodeproj
  1. 运行示例

在 Xcode 中选择目标设备或模拟器,点击运行按钮即可查看所有控件的实时预览效果。

学习建议

  1. 按类别学习:建议先掌握 Controls 中的基础控件,再学习 Layout 布局系统
  2. 结合预览:利用 SwiftUI 的实时预览功能,修改代码后立即查看效果
  3. 查阅源码:每个控件都有独立的 Swift 文件,方便快速定位和学习
  4. 动手实践:在理解示例代码的基础上,尝试修改和扩展功能

适用人群

  • SwiftUI 初学者:通过中文注释快速理解控件用法
  • iOS 开发者:作为开发过程中的速查手册
  • 从 UIKit 迁移的开发者:了解 SwiftUI 与 UIKit 的对应关系

项目链接

总结

SwiftUIViews 是一个优秀的 SwiftUI 学习资源,通过完整的中文示例和实时预览功能,大大降低了 SwiftUI 的学习门槛。无论你是刚开始学习 SwiftUI,还是需要在开发中快速查阅控件用法,这个项目都能为你提供很大帮助。

分享: