✨ 为 Swift 初始化器提供的超级甜的语法糖。
初始化 UILabel then 设置其属性。
let label = UILabel().then {
$0.textAlignment = .center
$0.textColor = .black
$0.text = "Hello, World!"
}
这等价于
let label: UILabel = {
let label = UILabel()
label.textAlignment = .center
label.textColor = .black
label.text = "Hello, World!"
return label
}()
你可以对所有 NSObject
子类使用 then()
。
let queue = OperationQueue().then {
$0.maxConcurrentOperationCount = 1
}
想要在你的自定义类型中使用?只需要创建扩展。
extension MyType: Then {}
let instance = MyType().then {
$0.really = "awesome!"
}
复制值类型时使用 with()
。
let newFrame = oldFrame.with {
$0.size.width = 200
$0.size.height = 100
}
newFrame.width // 200
newFrame.height // 100
使用 do()
可以用更少的代码来做一些事情。
UserDefaults.standard.do {
$0.set("devxoul", forKey: "username")
$0.set("devxoul@gmail.com", forKey: "email")
$0.synchronize()
}
这是一个在 UIViewController 子类中的用法示例。
final class MyViewController: UIViewController {
let titleLabel = UILabel().then {
$0.textColor = .black
$0.textAlignment = .center
}
let tableView = UITableView().then {
$0.backgroundColor = .clear
$0.separatorStyle = .none
$0.register(MyCell.self, forCellReuseIdentifier: "myCell")
}
override func viewDidLoad() {
super.viewDidLoad()
self.view.addSubview(self.titleLabel)
self.view.addSubview(self.tableView)
}
}
使用 CocoaPods:
pod 'Then'
import PackageDescription
let package = Package(
name: "MyAwesomeApp",
dependencies: [
.Package(url: "https://github.com/devxoul/Then", majorVersion: 2),
]
)
Then 使用 MIT 许可协议。 更多信息请查看 LICENSE 文件。