XCode 8 — Изменение ограничений в соответствии с ориентацией

#objective-c #xcode #autolayout #storyboard #constraints

#objective-c #xcode #автоматическое описание #раскадровка #ограничения

Вопрос:

Вот моя проблема.

У меня есть квадратное изображение, которое не помещается в приложение для iPad или iPhone, поскольку экраны не квадратные, поэтому я решил добавить UIImageView, который:

Когда телефон находится в портретном положении, я добавляю ограничение сверху (-20) и снизу (0), чтобы заполнить весь экран, выравнивая X по центру и сохраняя соотношение сторон, чтобы изображение было квадратным, даже если экран больше или меньше, это означает, что с обеих сторон я буду «потерять» часть моего изображения, но это нормально.

Когда я поворачиваю свой телефон в альбомную ориентацию, экран становится шире, поэтому я вижу квадратное изображение в середине экрана, но белый прямоугольник с обеих сторон. Я думаю, что решение этой проблемы заключается в том, что когда оно находится в альбомной позиции, мне нужно удалить верхние и нижние ограничения и добавить одно к lead (-20) и одно к trail (-20), центрировать изображение по оси Y и сохранить соотношение 1: 1…

Но мой вопрос: как добавить ограничение к допустимому для одного orientarion и изменить его на другой?

Каков наилучший подход?

Спасибо

FP

Ответ №1:

Вам не нужно делать это программно. Я рекомендую вам сделать так, чтобы представление заполняло супервизор — иметь по одному ограничению для каждого сверху, снизу, слева и справа. Затем для инспектора атрибутов UIImageView в построителе интерфейсов установите «Режим просмотра» на заливку аспекта.

Комментарии:

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

2. Юсуф, это именно то, что я искал, спасибо

Ответ №2:

Я думаю, у вас это неправильно.

В портретном режиме вы должны установить ограничения на след и лидерство, так как ваш рост больше ширины, поэтому, если вы установите (0) для следа и лидерства и соотношения 1: 1, вы можете быть уверены, что он будет хорошо вписываться. Также центрируйте его вертикально в контейнере.

В альбомной ориентации, поскольку ширина больше высоты, вы должны установить top и bottom (0) и соотношение 1: 1 и центрировать его по горизонтали в контейнере.

Комментарии:

1. Нет, то, что я написал, правильно, иначе у меня будет пустое пространство сверху и снизу на портрете, а слева и справа в альбомной ориентации

2. Хм, значит, задача состоит в том, чтобы выровнять прямоугольник ?! У вас есть два варианта: вы можете либо согласиться с тем, что я предложил, у вас будет «пробел», но все ваше изображение поместится, либо вы можете согласиться с предложением Юсуфа, и у вас не будет пробелов, но вы потеряете совсем немного своего изображения.. Я думаю, все сводится к отображаемому изображению.. Пустое пространство, о котором вы упоминаете, является фоном, почему бы вам не установить для него цвет, который дополняет ваше изображение, чтобы оно не выглядело..

3. На самом деле то, что предложил Юсуф, — это именно то, что я искал … спасибо за вашу помощь, я ценю это