关于 ios-application-dev
ios-application-dev 是使用 UIKit、SnapKit 和 SwiftUI 构建 iOS 应用的实践指南。它为开发者提供符合 Apple 平台惯例的组件建议,以及布局、无障碍、导航、隐私和系统集成检查清单。
主要功能
- 01UIKit 与 SwiftUI 组件参考
- 02布局与字体实践
- 03无障碍和颜色指导
- 04导航与状态保留模式
- 05隐私和权限检查清单
- 06系统集成建议
适用场景
- 01为应用界面选择 UIKit 或 SwiftUI 组件
- 02检查布局的无障碍性和屏幕尺寸适配
- 03规划跨标签页导航与状态处理
- 04核查权限请求和隐私行为
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ minimax-ai/ skills --skill ios-application-dev安装后在 Claude Code 中输入/ios-application-dev确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/accessibility.mdgraphics-animation.mdlayout-system.mdmetal-shader.mdnavigation-patterns.mdswift-coding-standards.mdswiftui-design-guidelines.mdsystem-integration.mduikit-components.md详细介绍
iOS 应用开发指南
使用 UIKit、SnapKit 和 SwiftUI 构建 iOS 应用的实用指南。重点介绍经过验证的模式和 Apple 平台惯例。
快速参考
UIKit
| 用途 | 组件 |
|---|---|
| 主要分区 | UITabBarController |
| 层级导航 | UINavigationController |
| 专注任务 | Sheet 展示 |
| 关键选择 | UIAlertController |
| 次要操作 | UIContextMenuInteraction |
| 列表内容 | UICollectionView + DiffableDataSource |
| 分区列表 | DiffableDataSource + headerMode |
| 网格布局 | UICollectionViewCompositionalLayout |
| 搜索 | UISearchController |
| 分享 | UIActivityViewController |
| 位置(单次) | CLLocationButton |
| 反馈 | UIImpactFeedbackGenerator |
| 线性布局 | UIStackView |
| 自定义形状 | CAShapeLayer + UIBezierPath |
| 渐变 | CAGradientLayer |
| 现代按钮 | UIButton.Configuration |
| 动态文本 | UIFontMetrics + preferredFont |
| 深色模式 | 语义颜色(.systemBackground、.label) |
| 权限 | 上下文相关的请求 + AVCaptureDevice |
| 生命周期 | UIApplication 通知 |
SwiftUI
| 用途 | 组件 |
|---|---|
| 主要分区 | TabView + tabItem |
| 层级导航 | NavigationStack + NavigationPath |
| 专注任务 | .sheet + presentationDetents |
| 关键选择 | .alert |
| 次要操作 | .contextMenu |
| 列表内容 | List + .insetGrouped |
| 搜索 | .searchable |
| 分享 | ShareLink |
| 位置(单次) | LocationButton |
| 反馈 | UIImpactFeedbackGenerator |
| 进度(已知) | ProgressView(value:total:) |
| 进度(未知) | ProgressView() |
| 动态文本 | .font(.body) 语义样式 |
| 深色模式 | .primary、.secondary、Color(.systemBackground) |
| 场景生命周期 | @Environment(\.scenePhase) |
| 减少动态效果 | @Environment(\.accessibilityReduceMotion) |
| 动态字体 | @Environment(\.dynamicTypeSize) |
核心原则
布局
- 触控目标 >= 44pt
- 内容置于安全区域内(SwiftUI 默认遵循此规则,仅对背景使用
.ignoresSafeArea()) - 使用 8pt 间距增量(8、16、24、32、40、48)
- 主要操作位于拇指可及区域
- 支持所有屏幕尺寸(从 iPhone SE 的 375pt 到 Pro Max 的 430pt)
字体排版
- UIKit:
preferredFont(forTextStyle:)+adjustsFontForContentSizeCategory = true - SwiftUI:语义文本样式
.headline、.body、.caption - 自定义字体:
UIFontMetrics/Font.custom(_:size:relativeTo:) - 在辅助功能字号下调整布局(最小 11pt)
颜色
- 使用语义系统颜色(
.systemBackground、.label、.primary、.secondary) - 为自定义颜色使用资源目录变体(任意/深色外观)
- 不要仅用颜色传达信息(应搭配图标或文本)
- 普通文本的对比度 >= 4.5:1,大号文本为 3:1
辅助功能
- 为图标按钮添加标签(
.accessibilityLabel()) - 遵循减少动态效果设置(
@Environment(\.accessibilityReduceMotion)) - 确保阅读顺序合理(
.accessibilitySortPriority()) - 支持粗体文本、增强对比度偏好设置
导航
- Tab 栏(3-5 个分区)在导航过程中保持可见
- 支持向后滑动(绝不覆盖系统手势)
- 在不同 Tab 之间保留状态(
@SceneStorage、@State) - 绝不使用汉堡菜单
隐私与权限
- 在适当的上下文中请求权限(不要在启动时请求)
- 在系统对话框前提供自定义说明
- 支持使用 Apple 登录
- 尊重 ATT 拒绝结果
检查清单
布局
- 触控目标 >= 44pt
- 内容置于安全区域内
- 主要操作位于拇指可及区域(下半部分)
- 所有屏幕尺寸均采用灵活宽度(从 SE 到 Pro Max)
- 间距符合 8pt 网格
字体排版
- 使用语义文本样式,或采用 UIFontMetrics 缩放的自定义字体
- 动态字体支持至辅助功能字号
- 大字号下布局可重新排列(不截断)
- 最小文本字号为 11pt
颜色
- 采用语义系统颜色或浅色/深色资源变体
- 深色模式经过专门设计(而非仅反转颜色)
- 信息不只通过颜色传达
- 文本对比度 >= 4.5:1(普通文本)/3:1(大号文本)
- 交互元素使用单一强调色
无障碍
- 为所有交互元素设置 VoiceOver 标签
- 阅读顺序符合逻辑
- 遵循粗体文本偏好设置
- 减少动态效果设置可禁用装饰性动画
- 所有手势都有替代操作方式
导航
- 使用标签栏展示 3-5 个顶级版块
- 不使用汉堡菜单/抽屉式菜单
- 导航过程中标签栏保持可见
- 全程支持向后滑动
- 在不同标签页之间保留状态
组件
- 仅在需要做出关键决策时使用警告框
- 操作面板提供关闭方式(按钮和/或滑动)
- 列表行高度 >= 44pt
- 破坏性按钮使用
.destructive角色
隐私
- 在相关场景中请求权限(而非启动时)
- 在系统权限对话框前提供自定义说明
- 与其他服务提供商选项一同提供通过 Apple 登录
- 无需账户即可使用基本功能
- 如需跟踪,则显示 ATT 提示,并尊重用户的拒绝选择
系统集成
- 应用可妥善处理打断情况(来电、后台运行、Siri)
- 应用内容已编入 Spotlight 索引
- 可分享内容提供分享表单
参考资料
| 主题 | 参考资料 |
|---|---|
| 触控目标、安全区域、CollectionView | 布局系统 |
| TabBar、NavigationController、模态视图 | 导航模式 |
| StackView、Button、Alert、Search、ContextMenu | UIKit 组件 |
| CAShapeLayer、CAGradientLayer、Core Animation | 图形与动画 |
| 动态字体、语义颜色、VoiceOver | 无障碍 |
| 权限、位置、分享、生命周期、触觉反馈 | 系统集成 |
| Metal 着色器与 GPU | Metal 着色器参考 |
| SwiftUI HIG、组件、模式、反模式 | SwiftUI 设计指南 |
| Optionals、Protocols、async/await、ARC、错误处理 | Swift 编码规范 |
Swift、SwiftUI、UIKit、SF Symbols、Metal 和 Apple 是 Apple Inc. 的商标。SnapKit 是其各自所有者的商标。
评论
支持 Markdown