> 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [github.com](https://github.com/devxoul/Then)
✨ Super sweet syntactic sugar for Swift initializers.
At a Glance
Initialize UILabel then set its properties.
let label = UILabel().then {
$0.textAlignment = .center
$0.textColor = .black
$0.text = "Hello, World!"
}
This is equivalent to:
let label: UILabel = {
let label = UILabel()
label.textAlignment = .center
label.textColor = .black
label.text = "Hello, World!"
return label
}()
Tips and Tricks
-
You can use then()
to all of NSObject
subclasses.
let queue = OperationQueue().then {
$0.maxConcurrentOperationCount = 1
}
-
Want to use with your own types? Just make extensions.
extension MyType: Then {}
let instance = MyType().then {
$0.really = "awesome!"
}
-
Use with()
when copying the value types.
let newFrame = oldFrame.with {
$0.size.width = 200
$0.size.height = 100
}
newFrame.width // 200
newFrame.height // 100
-
Use do()
to do something with less typing.
UserDefaults.standard.do {
$0.set("devxoul", forKey: "username")
$0.set("devxoul@gmail.com", forKey: "email")
$0.synchronize()
}
Real World Example
Here's an example usage in an UIViewController subclass.
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)
}
}
Installation
License
Then is under MIT license. See the LICENSE file for more info.