Портретная маска отображается правильно только после изменения ориентации на Пейзаж и обратно в портрет

У меня есть простой макет с несколькими представлениями и ограничениями для размещения и размера их по мере необходимости. Когда я развертываю приложение в симуляторе или устройстве, X, Y и Widths всех представлений имеют соответствующие размеры. Высота, с другой стороны, всегда равна 0. Все виды имеют пропорциональные высоты в соответствии с супер-представлением.

Теперь, если я переворачиваю ориентацию в "Пейзаж", а затем обратно к портрету, все отображается правильно (высота больше 0).

Я использовал ту же логику с пропорциональными высотами ранее, и я начал эту проблему с новыми создаваемыми контроллерами представлений после обновления до Xcode 7.

EDIT Вы можете получить .xib от: http://1drv.ms/1M81EUQ

Ответ 1

вам нужно установить другой метод вызова метода обновления относительно изменения ориентации, если вы используете автоматическое изменение размера маски или использовали автозапуск, чтобы исправить это.

Ответ 2

Ваш .xib был настроен с включенными классами классов, но ваши представления и ограничения были настроены только на ширину Compact, Regular height.

проверяется wC hR, Any Any is not

Я просмотрел и изменил представления и ограничения для применения к любой ширине, любой высоте, и это разрешило проблему с ландшафтными макетами.

Загрузите измененный файл .xib здесь

Я рекомендую использовать Xcode 7 Preview Assistant View при работе с Autolayout, так как он позволит вам видеть несколько устройств одновременно в нескольких направлениях. Это действительно помогло в этом случае показать, что макет был прекрасным в портретном, но не в ландшафте.

Это то, что я видел в вашем .xib, как вы указали Предварительный просмотр населенного портрета, но пустой пейзаж

И с изменениями в моем .xib Предварительный просмотр показанного населенного портрета и пейзажа

Как это могло произойти? Одним из способов является то, что вы, возможно, случайно установили редактор раскадровки в определенный класс размеров. Если вы видите синюю рамку внизу редактора, все, что вы добавите, будет настроено только для определенного класса размера. Вы можете нажать на класс размера, показанный, чтобы изменить его на w Любой h Любой, чтобы вернуться в режим по умолчанию.

Синяя панель внизу редактора раскадровки