2014-12-30 5 views
0

У меня есть два вида на супер-вид. Вид B находится под видом А:Значение для frame.size.height всегда одинаково независимо от высоты представления

VIEW A 
fixed top space to top layout guide 
fixed height 

VIEW B 
fixed top space to View A 
fixed bottom space to bottom layout guide 

Идея для View Высота + View B Высота для заполнения экрана по вертикали. Это хорошо работает. Если я изменяю константу ограничения высоты просмотра A, размеры изменяются так, как я ожидаю. Высота B возрастает или сжимается, чтобы охватить остальную часть экрана.

Однако значения для высоты обоих видов не изменяются и всегда 568,0. Для этого я смотрю a view's frame.size.height. Значения всегда 568.0 (я тестирую на iPhone 6) независимо от фактического размера представления.

У меня есть это:

heightConstraintViewA.constant = 300.0 
println("\(viewA.frame.size.height)") // this is always 568.0 
+0

Это вызывает проблемы? –

+0

У вас есть этот код _when_? _Где_? Если вы проверите его перед макетом, то по макету определения еще не произошло. – matt

ответ

1

Дело в том, что ограничения и расположение две разные вещи. Ограничение - это просто инструкция. Это не подчиняется до времени макета, которое намного позже.

Итак, вы можете установить ограничение высоты просмотра, но в это время ничего не происходит . Нет смысла проверять высоту представления в следующей строке после изменения ограничения, потому что ничего еще не произошло.

Позже выполняется макет, и ограничение подчиняется - и, если это то, что означают ограничения, высота фактически изменяется.

+0

Вот и все. Тяжелый вздох. Я проверял, прежде чем макет произошел. Как только я смогу принять ваш ответ, я опубликую простые до/после значений. Большое большое спасибо. – ToddB

Смежные вопросы