label을 세 개 가지는 UIStackView를 작성해보겠습니다.
UIView위 UILabel을 넣는것과 거의 유사합니다.
let label1: UILabel = {
let label = UILabel()
label.text = "label1"
labetl.translatesAutoresizingMaskIntoConstraints = false
return label
}
let label2: UILabel = {
let label = UILabel()
label.text = "label2"
labetl.translatesAutoresizingMaskIntoConstraints = false
return label
}
let label3: UILabel = {
let label = UILabel()
label.text = "label3"
labetl.translatesAutoresizingMaskIntoConstraints = false
return label
}
let stackView: UIStackView = {
let stackView = UIStackView()
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.axis = .vertical
stackView.alignment = .fill
stackView.distribution = .equalSpacing
stackView.spacing = 8
return stackView
}
stackView는 view위에 올라가기 때문에
override func viewDidLoad() {
self.view.addSubView(self.stackView)
}
override func viewDidLoad() {
self.view.addSubView(self.stackView)
[label1, label2, label3].map {
self.stackView.addArrangedSubview($0)
}
}
스택 뷰를 사용할 때는 비율을 많이 사용하게 되는데 label의 asepctRatio는 다음과 같이 설정할 수 있습니다.
override func viewDidLoad() {
self.view.addSubView(self.stackView)
[label1, label2, label3].map {
self.stackView.addArrangedSubview($0)
$0.heightAnchor.constraint(equalTo: $0.widthAnchor, multiplier: 1.0).isActive = true
}
}