所有开源包
界面Swift

SwiftUI-Components

面向 iOS 17 和 macOS 14 的现成 SwiftUI view,带有表单校验和无障碍手势

32星标数最新版本: v2.1.0更新时间: 2026年10月15日
支持平台:iOS 17macOS 14

许可证: MIT

一个由 SwiftUI view 组成的无依赖 Swift package:按钮、卡片、图表、带校验的表单输入、手势、列表、overlay、加载指示器和 toast。每个组件都是一个通过初始化方法配置的纯 View,因此你可以只用其中一两个,而不必采用整套主题系统。背后的逻辑,例如卡号校验、validator、JSON 表单 schema,以及滑动和形状识别,都由在 macOS 和 iPhone 模拟器上运行的 Swift Testing suite 覆盖。

功能特性

  • 从源码统计出的 223 个 view、12 个 view modifier 和 5 个手势 modifier,分属 14 个分类
  • 可组合的 validator、首次编辑后才出现的错误提示、带防抖的服务器端校验,以及多步骤表单
  • 从 JSON 渲染的表单;schema 中的模式匹配按每次匹配 20 ms、每次校验 100 ms 的预算运行
  • 滑动、边缘滑动、滑动序列、pinch-rotate-drag 组合手势以及形状绘制,每种都带有对应的无障碍操作
  • iOS 和 macOS 共用一套代码:几乎所有 UIKit 专属细节都在单个平台文件中映射为 AppKit 对应项或 no-op
  • Swift 6 语言模式,没有依赖;README 中的示例代码由示例应用和 test target 编译验证
  • 用 ColorContrast 计算 SwiftUI 颜色的 WCAG 2 对比度和等级

快速开始

swift
1import SwiftUI
2import SwiftUIComponents
3 
4struct ContentView: View {
5 @State private var rating = 3.0
6 
7 var body: some View {
8 VStack(spacing: 20) {
9 Text("Rate this app")
10 .font(.headline)
11 RatingInput(rating: $rating)
12 PrimaryButton("Send rating") {
13 print("Rating: \(rating)")
14 }
15 }
16 .padding()
17 }
18}

安装

Xcode (File › Add Package Dependencies…)

text
1https://github.com/muhittincamdali/SwiftUI-Components.git

Swift Package Manager

swift
1dependencies: [
2 .package(url: "https://github.com/muhittincamdali/SwiftUI-Components.git", from: "2.1.0")
3],
4targets: [
5 .target(name: "YourApp", dependencies: [
6 .product(name: "SwiftUIComponents", package: "SwiftUI-Components")
7 ])
8]

截图

按钮画廊,浅色模式
按钮画廊,深色模式
卡片画廊,浅色模式
图表画廊,浅色模式
指示器画廊,浅色模式
示例应用中带校验的注册表单
示例应用中从 JSON 渲染的联系表单
示例应用中的滑动、pinch-rotate-drag 和形状绘制

时间线

  1. 仓库开放;v1.0.0 标签打在第一个 commit 上(14 个源码文件,iOS 16 和 macOS 13)

  2. package 被精简:组件被移除并替换为占位代码(c7b3799)

  3. 重建为 2.0.0:组件在 Swift 6 语言模式下为 iOS 17 和 macOS 14 恢复,加入测试、CI 和 DocC(PR #3)

  4. 2.1.0:校验、JSON 表单、手势和对比度检测由已归档的 SwiftUI-Forms-Kit、SwiftUI-Gesture-Library 和 iOSUIComponents 重写而来(PR #6)

相关链接

已合并的仓库

相关文章

阅读文章