QuicklySwift 是一个旨在提升 Swift UI 开发效率的第三方库,提供了多种扩展方法,涵盖了常见的 UI 组件如 UIView、UIStackView、UITextField 等。其 GitHub 仓库 QuicklySwift GitHub 提供了详细的文档和示例,方便开发者快速集成和使用。
方法分类与详细说明
QuicklySwift 的方法主要通过扩展现有 UIKit 组件实现,提供了便捷的链式调用和回调机制。以下按组件分类整理:
1. UIView 扩展
UIView 的扩展方法主要用于简化视图布局和子视图管理。
-
qbody
- 功能:将子视图添加到当前视图,支持 StackView 使用
addArrangedSubview
。 - 代码示例:
self.view.qbody([ label1.qmakeConstraints({ make in make.left.right.equalToSuperview().inset(20) }), label2.qmakeConstraints({ make in make.left.right.equalToSuperview().inset(20) }) ])
- 注解:该方法会将
label1
和label2
添加到视图,并为它们设置约束。适合快速构建视图层次结构,尤其是 StackView 场景。
- 功能:将子视图添加到当前视图,支持 StackView 使用
-
qmakeConstraints
- 功能:设置视图的约束,使用 SnapKit 风格的链式语法。
- 代码示例:
label1.qmakeConstraints({ make in make.left.right.equalToSuperview().inset(20) })
- 注解:设置约束后需调用
qactiveConstraints()
激活,否则约束不会生效。延迟激活的设计便于在视图添加后统一处理。
2. UIStackView 扩展
UIStackView 的扩展方法简化了堆栈视图的创建和配置。
-
qbody
- 功能:创建包含指定视图的 StackView,默认垂直排列。
- 代码示例:
VStackView.qbody([btn1, btn2, btn3]).qmakeConstraints({ make in make.left.right.equalToSuperview() }).qspacing(15)
- 注解:生成一个垂直 StackView,包含
btn1
,btn2
,btn3
,并设置间距为 15,适合快速构建按钮组。
-
qspacing
- 功能:设置 StackView 中排列视图的间距。
- 代码示例:见上述
qbody
示例中的.qspacing(15)
。 - 注解:通过链式调用设置间距,增强代码可读性。
3. UITextField 扩展
UITextField 的扩展方法提供了文本输入的便捷配置。
-
qplaceholder
- 功能:设置占位符文本。
- 代码示例:
UITextField().qplaceholder("输入文本")
- 注解:直接设置占位符,简化
placeholder
属性的赋值。
-
qmaxCount
- 功能:限制输入的最大字符数,每个表情符号计为 1 个字符。
- 代码示例:
UITextField().qmaxCount(10)
- 注解:适合限制用户输入长度,特别在需要控制输入内容时使用。
-
qtextChanged
- 功能:当文本改变时触发回调。
- 代码示例:
UITextField().qtextChanged({ print("text 改变") })
- 注解:提供文本改变的实时监听,方便处理输入验证或 UI 更新。
4. UIButton 扩展
UIButton 的扩展方法简化了事件处理和状态管理。
-
qactionFor
- 功能:为按钮添加特定事件的目标-动作。
- 代码示例:
UIButton().qactionFor(.touchUpInside, handler: { print("点击了按钮") })
- 注解:为
.touchUpInside
事件添加点击回调,替代传统addTarget
方法。
-
qisSelectedChanged
- 功能:当按钮的选中状态改变时触发回调。
- 代码示例:
UIButton().qisSelectedChanged({ sender in sender.backgroundColor = sender.isSelected ? .red : .lightGray })
- 注解:根据选中状态动态更新 UI,例如改变背景色。
5. UITableView 扩展
UITableView 的扩展方法简化了表格的配置和事件处理。
-
qregister
- 功能:注册 UITableViewCell 类以供重用。
- 代码示例:
tableView.qregister(TestTableViewCell.self, identifier: "cell")
- 注解:注册单元格类,标识为 "cell",便于后续
dequeueReusableCell
。
-
qnumberofRows
- 功能:设置表格的行数。
- 代码示例:
tableView.qnumberofRows({ return 100 })
- 注解:通过闭包返回行数,适合动态数据源。
-
qcell
- 功能:配置指定 indexPath 的单元格。
- 代码示例:
tableView.qcell({ tableView, indexPath in let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TestTableViewCell cell.textLabel?.text = "Row \(indexPath.row)" return cell })
- 注解:为每个单元格设置文本,适合自定义单元格内容。
-
qdidSelectRow
- 功能:当行被选中时触发回调。
- 代码示例:
tableView.qdidSelectRow({ tableView, indexPath in print("selected:\(indexPath)") })
- 注解:打印选中的行索引,方便处理行选择逻辑。
6. UIScrollView 扩展
UIScrollView 的扩展方法提供了滚动相关事件的便捷处理。
-
qcontentSizeChanged
- 功能:当内容大小改变时触发回调。
- 代码示例:
scrollView.qcontentSizeChanged({ print("contentsize changed") })
- 注解:适合动态调整内容时监听大小变化。
-
qdidScroll
- 功能:当 ScrollView 滚动时触发回调。
- 代码示例:
scrollView.qdidScroll({ print("scrollView 滚动") })
- 注解:监听滚动事件,适合实现分页或滚动动画。
7. UIViewController 扩展
UIViewController 的扩展方法简化了生命周期和导航事件处理。
-
qdidpop
- 功能:当视图控制器从导航栈中弹出时触发回调。
- 代码示例:
vc.qdidpop({ print("popped") })
- 注解:适合处理导航栈弹出后的逻辑。
-
qdidAppear
- 功能:当视图控制器出现时触发回调。
- 代码示例:
vc.qdidAppear({ print("appeared") })
- 注解:适合在视图出现时执行初始化或 UI 更新。
8. UIAlertController 扩展
UIAlertController 的扩展方法简化了弹窗的创建和交互。
- qwith
- 功能:创建带有标题、消息、动作和取消按钮的 AlertController。
- 代码示例:
UIAlertController.qwith(title: "标题", "提示内容", actions: ["按钮1", "按钮2"], cancelTitle: "取消", style: .alert) { index in print("clicked \(actions[index])") } cancel: { print("cancelled") }
- 注解:创建弹窗,包含两个动作按钮和取消按钮,点击时分别打印对应信息。
方法总结表
以下表格汇总了所有方法及其主要功能,便于快速查阅:
组件 | 方法 | 主要功能 |
---|---|---|
UIView | qbody | 添加子视图,支持 StackView |
UIView | qmakeConstraints | 设置视图约束,需要激活 |
UIStackView | qbody | 创建包含视图的 StackView |
UIStackView | qspacing | 设置 StackView 间距 |
UITextField | qplaceholder | 设置占位符文本 |
UITextField | qmaxCount | 限制输入字符数 |
UITextField | qtextChanged | 文本改变时触发回调 |
UIButton | qactionFor | 添加事件目标-动作 |
UIButton | qisSelectedChanged | 选中状态改变时触发回调 |
UITableView | qregister | 注册单元格类 |
UITableView | qnumberofRows | 设置行数 |
UITableView | qcell | 配置单元格 |
UITableView | qdidSelectRow | 行选中时触发回调 |
UIScrollView | qcontentSizeChanged | 内容大小改变时触发回调 |
UIScrollView | qdidScroll | 滚动时触发回调 |
UIViewController | qdidpop | 弹出时触发回调 |
UIViewController | qdidAppear | 出现时触发回调 |
UIAlertController | qwith | 创建带动作和取消的 AlertController |