Работа с AutoLayout в портрете и пейзаже
Автоматическая компоновка, как бы то ни было, сводит меня с ума с ограничениями. У меня портретный режим, разработанный в IB, но я не могу заставить желаемую ориентацию ландшафта работать.
![layout]()
Обратите внимание, что при изменении ориентации в альбомной ориентации расстояние между блоками UIImageView уменьшается, а выравнивание текста SAMPLE TEXT
изменяется вправо.
В настоящее время я добавил несколько ограничений для работы. Тем не менее, мне нужно сохранить пространство между блоками UIImageView фиксированным, в результате чего он выглядит сжатым в портретном и прекрасном пейзаже. Мне нужно, чтобы он был равномерно распределен по портрету и сжимался в ландшафте (как на изображении выше). Точно так же в настоящее время мои ограничения вызывают текст, но он не удерживает его в центре экрана и выравнивается вправо.
Возможно ли это с помощью Auto Layout? Если да, то как? Помогите с благодарностью.
Ответы
Ответ 1
Есть несколько способов приблизиться к этому. Один из способов заключается в том, чтобы вложить ваши 3 изображения в UIView. Дайте ограничениям сверху и снизу изображения сверху и снизу соответственно и дайте среднему ограничение по центру. Дайте этому закрывающему виду фиксированную высоту и ширину и ограничение в верхней части представления контроллера. Сделайте IBOutlet для ограничения высоты для этого закрывающего представления и измените его на вращение. В приведенном ниже примере я дал ему высоту 350 в портрете:
-(void)updateViewConstraints {
[super updateViewConstraints];
if (self.view.bounds.size.height < self.view.bounds.size.width) {
self.heightCon.constant = self.view.bounds.size.height;
}else{
self.heightCon.constant = 350;
}
}
Что касается метки, самым простым способом является удаление ограничений, которые у вас есть (нижний и центральный X), и добавление трейлинга и центрирования на поворот.
Ответ 2
Да, это можно сделать с помощью автоматической компоновки. Если вы хотите, чтобы расстояние между представлениями увеличивалось и/или уменьшалось в зависимости от ориентации, вы можете использовать соотношение "Меньше или равное" или "Больше или равно" (вместо Equal) для ограничения, которое позволяет увеличить или уменьшить расстояние:/p >
![enter image description here]()
Играйте с этим, и вы сможете получить то, что хотите.
Ответ 3
Да, это возможно сделать с помощью Auto Layout. С помощью нескольких шагов, которые, как мне кажется, слишком долго для публикации в качестве ответа, вы можете сохранить расстояние между вашими ImageViews и сохранить выравнивание текста одинаковым.
По существу, вам придется прикрепить угол каждого ImageView и удалить некоторые ограничения, чтобы он не автоматически сжимал интервал при изменении ориентации.
Полное объяснение того, как это сделать (в точности то, что вы просите) объясняется в этом туроператоре. Вы можете найти его на полпути через страницу.
Надеюсь, это то, что вы искали.