三方QuicklySwift使用

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") }
      
    • 注解:创建弹窗,包含两个动作按钮和取消按钮,点击时分别打印对应信息。

方法总结表

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

组件 方法 主要功能
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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容