Swift ThenSwift 初始化語法糖
Then 是實(shí)現(xiàn) Swift 對象初始化的一個語法糖
初始化 UILabel 并設(shè)置其屬性
let label = UILabel().then {
$0.textAlignment = .center
$0.textColor = .black
$0.text = "Hello, World!"
}
相當(dāng)于:
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 } -
在自定義類中使用,只需進(jìn)行簡單擴(kuò)展:
extension MyType: Then {} let instance = MyType().then { $0.really = "awesome!" } -
拷貝值類型數(shù)據(jù)時候
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("[email protected]", forKey: "email") $0.synchronize() }
真實(shí)示例:
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)
}
}
安裝
-
For iOS 8+ projects with CocoaPods:
pod 'Then'
-
For iOS 8+ projects with Carthage:
github "devxoul/Then" -
Using Swift Package Manager:
import PackageDescription let package = Package( name: "MyAwesomeApp", dependencies: [ .Package(url: "https://github.com/devxoul/Then", majorVersion: 2), ] )
評論
圖片
表情
