ark。有关任何功能请求,请推文 @arkverse。非常感激反馈!
一个用于 UIKit 的 Swift 闭包库,使得事件的创建变得更加容易和清洁。目前支持对 UIControl
事件和 UIGestureRecognizers
(所有子类)的闭包。我们将继续添加更多的闭包支持。内存管理,并在 Swift 中完全编写。
支持所有 UIControlEvents
,并且可以将多个闭包添加到同一事件。
快速示例
button.on(.TouchUpInside, (sender: AnyObject) -> () {
let button = sender as! UIButton
button.setTitle("Pressed", forControlState:.Normal)
})
请务必查看我们的 SwiftRecord 库!
访问 ark 以了解更适合初学者的 UIClosures 指南
将 Classes/UIClosures.swift
或 UIClosures.framework
拖放到您的项目中
import UIClosures
添加到您的文件中(如有必要)在您的 UIControl 或类似 onTouchUpInside
的便捷方法上调用 on
// Make sure you set your capture list to break your class-closure strong reference loop
on(.TouchUpInside, listener: { [unowned self] (sender) -> () in
self.title = "New ViewController Title!"
let button = sender as! UIButton
button.titleLabel?.font = UIFont.systemFont
})
// Can add another closure to the same event, convenience method used here
button.onTouchUpInside() {[weak button = button] (sender) -> () in
button.setTitleColor(UIColor.redColor(), forState: UIControlState.Normal)
})
使用您想要的任何子类。您 **必须** 使用闭包初始化器,而不是 target: action:
初始化器
let tap = UITapGestureRecognizer() { (gesture: UITapGestureRecognizer) -> () in
println("got a tap")
}
tap.onGesture() { (gesture: UITapGestureRecognizer) -> () in
println("got this tap again")
}
将调用所有闭包
再次提醒,如果要引用任何变量,请记住捕获列表
UIClosures 托管于 MIT 许可协议下。更多信息请查阅 LICENSE 文件。
了解我们更多信息请访问 ark,并查看我们的其他 Swift 库。