关于 ios-uikit
ios-uikit 技能面向使用 Swift 和 UIKit 开发 iOS 界面的开发者,涵盖代码构建布局、列表视图和视图控制器生命周期,并介绍通过 UIHostingController 嵌入 SwiftUI 视图。
主要功能
- 01管理 UIViewController 生命周期
- 02构建 UITableView 和 CollectionView 列表
- 03使用 Auto Layout 定义布局
- 04以代码创建界面
- 05通过 UIHostingController 嵌入 SwiftUI 视图
适用场景
- 01不使用 storyboard 构建 UIKit 页面
- 02在表格视图中显示动态内容
- 03在同一应用中组合 UIKit 和 SwiftUI
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill ios-uikit安装后在 Claude Code 中输入/ios-uikit确认已加载。
详细介绍
ios-uikit
用途
此技能可帮助 AI 使用 UIKit 进行 iOS 应用开发,重点涵盖使用 UIViewController、UITableView/CollectionView、Auto Layout 构建和管理用户界面、以编程方式创建 UI,以及通过 UIHostingController 与 SwiftUI 桥接。
适用场景
当 iOS 项目需要自定义视图、列表或布局且不使用 storyboard 时,可使用此技能;它适用于 Swift 应用中的编程式 UI、UIKit 与 SwiftUI 的集成,或 UITableView 中的动态内容处理。如果项目完全使用 SwiftUI,或面向非 iOS 平台,则不适用。
主要功能
- 管理 UIViewController 生命周期:实现 viewDidLoad、viewWillAppear,以进行设置和更新。
- 处理 UITableView/CollectionView:设置数据源、代理和单元格复用,以高效渲染列表。
- 以编程方式应用 Auto Layout:使用 NSLayoutConstraint 动态定义布局,确保适配不同设备尺寸。
- 以编程方式创建 UI:使用 UIView 子类构建视图,并通过代码添加子视图,无需使用 Interface Builder。
- 与 SwiftUI 桥接:使用 UIHostingController 在 UIKit 应用中嵌入 SwiftUI 视图,以支持混合架构。
使用模式
要创建 UIViewController 子类,请定义一个继承自 UIViewController 的新类,并重写关键方法;例如,在新文件中编写:
import UIKit
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
}
}
对于 UITableView,实现 UITableViewDataSource:设置数据源,定义 numberOfRowsInSection 和 cellForRowAt;按如下方式注册单元格类:
let tableView = UITableView(frame: view.bounds)
tableView.dataSource = self
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
使用 Auto Layout 时,以编程方式添加约束:使用锚点定位,例如将按钮固定在中心:
let button = UIButton()
view.addSubview(button)
button.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
要通过 UIHostingController 桥接,请嵌入 SwiftUI 视图:创建一个实例,并将其设为根视图控制器:
let hostingController = UIHostingController(rootView: MySwiftUIView())
present(hostingController, animated: true)
代理中始终使用弱引用以避免循环引用,并在不同设备上测试布局的响应性。
常用命令/API
主要 API 包括用于初始设置的 UIViewController 方法(如 viewDidLoad());对于 UITableView,使用 tableView.reloadData() 刷新内容。要添加 Auto Layout 约束,可将约束数组传入 NSLayoutConstraint.activate()。在 Xcode 中构建的 CLI 示例:xcodebuild -scheme MyApp -configuration Debug。对于编程式 UI,使用 UIView.addSubview(),并设置 frame 或约束。Info.plist 的配置格式可能会包含 UIRequiredDeviceCapabilities,用于检查设备。无需直接进行身份验证,但如果要与服务集成,可在构建脚本中使用 $API_KEY 等环境变量。具体做法:运行 xcodebuild 前,先执行 export API_KEY=your_key。此处不适用常见端点,但在 UIKit 中进行网络调用时,可使用带代理的 URLSession。基本 URLSession 代码片段:
let session = URLSession.shared
let task = session.dataTask(with: URL(string: "https://example.com")!) { data, response, error in
// Handle response
}
task.resume()
为避免 Auto Layout 出错,更新后始终调用 layoutIfNeeded()。
集成说明
在 Swift 文件中导入 UIKit,即可集成此技能;对于 SwiftUI 桥接,还需确保导入 SwiftUI。与其他框架结合时,使用 UIHostingController 封装 SwiftUI 视图,并将其作为子视图控制器添加。对于配置,可在 AppDelegate 或 SceneDelegate 中进行设置,例如在 application(_:didFinishLaunchingWithOptions:) 中实例化并呈现视图控制器。如果使用 pods,请在 Podfile 中添加:pod 'SomeUIKitLib',然后运行 pod install。使用 xcrun simctl boot "iPhone 14" 在模拟器中测试集成,以启动设备。对于环境变量,可在代码中使用 let key = ProcessInfo.processInfo.environment["API_KEY"] 进行引用。应用约束前,确保所有视图都已添加到视图层级中。
错误处理
正确使用可视化格式语言或锚点,处理 Auto Layout 冲突等常见错误;使用 Xcode 的调试视图层次结构进行调试。对于 UITableView,实现 didSelectRowAt 并检查索引,以捕获数据源错误。使用 try-catch 处理运行时问题,例如,在 URLSession 回调中检查错误:
if let error = error {
print("Error: \(error.localizedDescription)")
return
}
对于 UIViewController,重写 didReceiveMemoryWarning 以释放资源。使用 os_log 或 print 记录错误以便调试,并在代理中使用 guard 语句检查 nil 值。
图谱关系
- 与集群 mobile 相关(例如,与 android-jetpack 共享标签,用于跨平台 UI 模式)。
- 通过标签关联:uikit(关联到 swiftui,用于桥接)、ios(关联到 xcode-build,用于开发工作流)、viewcontroller(关联到 navigation-stack,用于应用流程)、autolayout(关联到 responsive-design,用于自适应 UI)。