Подтвердить что ты не робот

Работа с AutoLayout в портрете и пейзаже

Автоматическая компоновка, как бы то ни было, сводит меня с ума с ограничениями. У меня портретный режим, разработанный в IB, но я не могу заставить желаемую ориентацию ландшафта работать.

layout

Обратите внимание, что при изменении ориентации в альбомной ориентации расстояние между блоками UIImageView уменьшается, а выравнивание текста SAMPLE TEXT изменяется вправо.

В настоящее время я добавил несколько ограничений для работы. Тем не менее, мне нужно сохранить пространство между блоками UIImageView фиксированным, в результате чего он выглядит сжатым в портретном и прекрасном пейзаже. Мне нужно, чтобы он был равномерно распределен по портрету и сжимался в ландшафте (как на изображении выше). Точно так же в настоящее время мои ограничения вызывают текст, но он не удерживает его в центре экрана и выравнивается вправо.

Возможно ли это с помощью Auto Layout? Если да, то как? Помогите с благодарностью.

4b9b3361

Ответ 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 и удалить некоторые ограничения, чтобы он не автоматически сжимал интервал при изменении ориентации.

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

Надеюсь, это то, что вы искали.