Then
✨ Super sweet syntactic sugar for Swift initializers
Install / Use
/learn @devxoul/ThenREADME
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 ofNSObjectsubclasses.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
-
Using CocoaPods:
pod 'Then' -
Using Swift Package Manager:
import PackageDescription let package = Package( name: "MyAwesomeApp", dependencies: [ .Package(url: "https://github.com/devxoul/Then", majorVersion: 2), ] )
License
Then is under MIT license. See the LICENSE file for more info.
Related Skills
node-connect
341.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
84.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
341.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
84.4kCommit, push, and open a PR
