EasyClosure 1.0.0

EasyClosure 1.0.0

Khoa Pham 维护。



EasyClosure

Version Carthage Compatible License Platform Swift

目录

故事

有许多通信模式

有时候,你只想有一个统一、快捷的方式来做这件事。在任何一个 NSObject 子类上调用 on,以最快的方式处理你的事件。

特性

  • 处理动作和事件的快捷方式
  • 易于扩展
  • 基于泛型协议约束的正确方法建议
  • 支持 iOS、macOS

示例

我们可以使用 UISwitch 来做一个有趣的 good, cheap, fast 的演示。

func allOn() -> Bool {
  return [good, cheap, fast].filter({ $0.isOn }).count == 3
}

good.on.valueChange { _ in
  if allOn() {
    fast.setOn(false, animated: true)
  }
}

cheap.on.valueChange { _ in
  if allOn() {
    good.setOn(false, animated: true)
  }
}

fast.on.valueChange { _ in
  if allOn() {
    cheap.setOn(false, animated: true)
  }
}

目标操作和委托

UIButton

button.on.tap {
  print("button has been tapped")
}

UISlider

slider.on.valueChange { value in
  print("slider has changed value")
}

UITextField

textField.on.textChange { text in
  print("textField text has changed")
}

UITextView

textView.on.textChange { text in
  print("textView text has changed")
}

UISearchBar

searchBar.on.textChange { text in
  print("searchBar text has changed")
}

UIDatePicker

datePicker.on.pick { date in
  print("datePicker has changed date")
}

UIBarButtonItem

barButtonItem.on.tap {
  print("barButtonItem has been tapped")
}

UIGestureRecognizer

gestureRecognizer.on.occur {
  print("gesture just occured")
}

可扩展

扩展 Container 并指定 Host,以便为您自己的类型添加更多功能。例如:

public extension Container where Host: UITableView {
  func cellTap(_ action: @escaping (UITableViewCell) -> Void)) {
    // Your code here here
  }
}

// usage
let tableView = UITableView()
tableView.on.cellTap { cell in
  
}

安装

EasyClosure 通过 CocoaPods 提供使用。要安装它,请将以下行添加到 Podfile 中:

pod 'EasyClosure'

EasyClosure 也通过 Carthage 提供使用。只需将以下内容写入 Cartfile

github "onmyway133/EasyClosure"

EasyClosure 还可以手动安装。只需下载并将 Sources 文件夹拖动到您的项目中。

作者

Pham Khoa,[邮箱地址加密,需点击查看]

贡献力量

我们非常欢迎您为 EasyClosure 贡献,更多详情请查看 贡献力量 文件。

许可证

EasyClosure 可在 MIT 许可证下使用。有关更多信息,请参阅 LICENSE 文件。