Похоже, что в некоторых случаях systemLayoutSizeFitting не возвращает правильную высоту для правильного отображения/позиционирования всех подпредставлений вид. Я неправильно использую systemLayoutSizeFitting или есть какой-то другой способ избежать этого?
Длинная история:
Файл XIB UIViewController содержит не только основное представление, но и ряд других представлений, которые добавляются к представлению контроллеров представлений во время выполнения. Все эти дополнительные представления должны иметь одинаковую высоту при добавлении в представление контроллеров представлений.
Представления могут выглядеть следующим образом: Простое представление-контейнер, содержащее некоторые подпредставления, наложенные друг на друга.

Поскольку высота представления контейнера должна быть гибкой, вертикальное расстояние между нижней кнопкой и меткой над ней использует ограничение больше, чем.< /p>
Чтобы придать всем представлениям одинаковую высоту, я попытался измерить необходимую высоту каждого представления с помощью systemLayoutSizeFitting:
Код: Выделить всё
@IBOutlet var pageViews: [UIView]!
override func viewDidLoad() {
super.viewDidLoad()
var maxHeight: CGFloat = 0
for pageView in pageViews {
// Add pageView somewhere on view and give it leading, trailing and top
// constraint, but no height constraint yet.
addToView(pageView)
maxHeight = max(maxHeight, pageView.systemLayoutSizeFitting(CGSize(width: view.frame.width, height: UIView.layoutFittingCompressedSize.height), withHorizontalFittingPriority: .required, verticalFittingPriority: .fittingSizeLevel).height)
}
for pageView in pageViews {
// Give all pageViews the same height
pageView.heightAnchor.constraint(equalToConstant: maxHeight).isActive = true
}
}
[img]https: //i.sstatic.net/FrNoz.jpg[/img]
В правом примере высота недостаточно велика, поэтому кнопка сжимается. Я могу противодействовать этому, увеличив сопротивление вертикальному сжатию кнопки, однако в этом случае другие элементы управления (например, заголовок) сжимаются...
Почему это происходит? Почему systemLayoutSizeFitting не возвращает высоту, достаточную для отображения всех элементов управления без сжатия?
Подробнее здесь: https://stackoverflow.com/questions/710 ... -to-show-a