三方QuicklySwift使用

11 阅读5分钟

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)
          })
      ])
      
    • 注解:该方法会将 label1label2 添加到视图,并为它们设置约束。适合快速构建视图层次结构,尤其是 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") }
      
    • 注解:创建弹窗,包含两个动作按钮和取消按钮,点击时分别打印对应信息。

方法总结表

以下表格汇总了所有方法及其主要功能,便于快速查阅:

组件方法主要功能
UIViewqbody添加子视图,支持 StackView
UIViewqmakeConstraints设置视图约束,需要激活
UIStackViewqbody创建包含视图的 StackView
UIStackViewqspacing设置 StackView 间距
UITextFieldqplaceholder设置占位符文本
UITextFieldqmaxCount限制输入字符数
UITextFieldqtextChanged文本改变时触发回调
UIButtonqactionFor添加事件目标-动作
UIButtonqisSelectedChanged选中状态改变时触发回调
UITableViewqregister注册单元格类
UITableViewqnumberofRows设置行数
UITableViewqcell配置单元格
UITableViewqdidSelectRow行选中时触发回调
UIScrollViewqcontentSizeChanged内容大小改变时触发回调
UIScrollViewqdidScroll滚动时触发回调
UIViewControllerqdidpop弹出时触发回调
UIViewControllerqdidAppear出现时触发回调
UIAlertControllerqwith创建带动作和取消的 AlertController