Programmatic UI#
Source Code
Create Component#
1
2
3
4
5
6
7
| private let titleLabel: UILabel = {
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
label.font = .systemFont(ofSize: 22, weight: .bold)
label.numberOfLines = 0
return label
}()
|
1
2
3
4
5
6
7
8
9
10
| private let downloadButton: UIButton = {
let button = UIButton()
button.translatesAutoresizingMaskIntoConstraints = false
button.backgroundColor = .red
button.setTitle("Download", for: .normal)
button.setTitleColor(.white, for: .normal)
button.layer.cornerRadius = 8
button.layer.masksToBounds = true
return button
}()
|
Add component to View#
1
2
3
4
5
6
7
8
| override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(titleLabel)
view.addSubview(downloadButton)
// coming soon :)
configureConstraints()
}
|
leading: left | trailing: right
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| private func configureConstraints() {
let titleLabelConstraints = [
titleLabel.topAnchor.constraint(equalTo: webView.bottomAnchor, constant: 20),
titleLabel.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20),
titleLabel.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20)
]
let downloadButtonConstraints = [
downloadButton.centerXAnchor.constraint(equalTo: view.centerXAnchor),
downloadButton.topAnchor.constraint(equalTo: overviewLabel.bottomAnchor, constant: 25),
downloadButton.widthAnchor.constraint(equalToConstant: 140),
downloadButton.heightAnchor.constraint(equalToConstant: 40)
]
NSLayoutConstraint.activate(titleLabelConstraints)
NSLayoutConstraint.activate(downloadButtonConstraints)
}
|
Screenshot#
