Я программно строю вертикальный UIStackView, чтобы показать 3 коротких UILabel's:
import UIKit
import PlaygroundSupport
let box = UIView(frame: CGRect(origin: CGPoint(x:0, y:0), size: CGSize(width: 100, height: 100)))
box.backgroundColor = .white
let labels: [UILabel] = (1...3).map{ index in
let label = UILabel()
label.text = "item \(index)"
return label
}
let sv = UIStackView(arrangedSubviews: labels)
sv.axis = .vertical
sv.alignment = .center
sv.translatesAutoresizingMaskIntoConstraints = false
box.addSubview(sv)
sv.centerXAnchor.constraint(equalTo: box.centerXAnchor).isActive = true
sv.centerYAnchor.constraint(equalTo: box.centerYAnchor).isActive = true
// performing this font change on a single item collapses the stack view
if let label = sv.subviews[1] as? UILabel {
label.font = UIFont.italicSystemFont(ofSize: UIFont.labelFontSize)
}
PlaygroundPage.current.liveView = box
Выполнение изменения шрифта одной метки из стека, как показано выше, заставляет метки сворачиваться друг в друга, превращаясь в нечитаемыекапля букв:
Вместо
Я получаю
Мне не хватает каких-то базовых обязательных ограничений?
Следует отметить, что я использую игровую площадку Xcode 10.2.1 для разработки этого представления.