Автомакет отлично подходит для выражения отношения одного объекта к другому и разрешения конфликтов, но он не имеет встроенных условных понятий. Я думаю, что для вашего макета вам будет проще всего добавлять и удалять ограничения на вращение, проверьте https://developer.apple.com/library/ios/#documentation/AppKit/Reference/NSLayoutConstraint_Class/NSLayoutConstraint/NSLayoutConstraint.html, чтобы узнать, как их добавить.
Вы также можете установить свои ограничения и настроить приоритеты, чтобы он работал правильно при вращении, но для этого потребуется некоторое тестирование и настройка. Я провел некоторое тестирование локально, и я думаю, что все работает правильно, но это только с пустыми представлениями, которые не имеют собственного размера содержимого. Тем не менее, вот что, я думаю, требуется, чтобы сделать все это с помощью раскадровки:
- Убедитесь, что синий вид имеет ширину ‹= ширину портретной ориентации и >= минимальную ширину альбомной ориентации.
- Убедитесь, что красный вид имеет минимальную высоту
- Исправьте ширину желтого вида и установите высоту >= высоты портрета.
- Привяжите каждый вид к углу, в котором он всегда будет оставаться (например, закрепите конец и низ к супервиду для желтого цвета).
- Совместите верхнюю часть желтого вида с синим видом с низким приоритетом
- Увеличьте сопротивление сжатию содержимого для желтого цвета
Я думаю об этом, начиная с синего представления, имеющего довольно высокий приоритет максимального размера, и желтого представления, знающего, как расширяться вверх, но с низким приоритетом. Когда он вращается, синий вид сохраняет свой максимальный размер, что позволяет желтому виду расширяться вверх. Затем я заполняю необходимые ограничения, чтобы все было согласовано.
Это довольно сложно описать в тексте, вот скриншот, показывающий три представления и ограничения между ними. Он не показывает все, но вы можете, по крайней мере, проверить отношения между представлениями: ![xcode, показывающий ограничения](https://i.stack.imgur.com/ockwS.png)
person
James
schedule
24.05.2013