Как правильно использовать UIView systemLayoutSizeFitting, чтобы получить высоту для отображения всех подпредставлений сIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Как правильно использовать UIView systemLayoutSizeFitting, чтобы получить высоту для отображения всех подпредставлений с

Сообщение Anonymous »

TD;DR
Похоже, что в некоторых случаях 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»