Какой лучший способ справиться с пейзажными / портретными различиями в IB? - PullRequest
8 голосов
/ 09 октября 2008

У меня есть вид, который поддерживает альбомную и книжную ориентацию, все элементы управления перемещаются при переключении с одного на другое. В настоящее время я делаю это, устанавливая .center каждого из моих элементов управления, когда пользователь поворачивает телефон. Проблема заключается в том, что это утомительно, требует много кода и, по-видимому, в первую очередь лишает цели использовать Interface Builder.

У меня вопрос: есть ли способ в Интерфейсном Разработчике для одного представления поддерживать несколько видов (один для альбомной ориентации, для портретной)? Если нет, то как другие люди делают это с IB? Вы настроили 2 просмотра?

Редактировать: Просто чтобы уточнить, что мои альбомные и портретные виды выглядят по-разному, я не хочу прямого преобразования, я фактически отображаю данные по-разному в ландшафтном режиме

Ответы [ 4 ]

1 голос
/ 30 декабря 2008

При необходимости я добавляю UIView объекты в представление в IB, которое я скрываю. Дайте ему хороший фоновый цвет, чтобы вы могли видеть его, и отправьте его полностью на фон. Затем используйте рамку этого вида, когда вам нужно установить рамку объекта. Если у вас их много, вы можете вместо этого использовать UILabel, чтобы вы могли дать ему видимое имя в IB.

Если вас беспокоят проблемы с памятью, просто удалите все эти дополнительные UIView s в ViewDidLoad и просто сохраните значения их кадров в элементе CGRect s. Конечно, это работает только в том случае, если у вас нет ни одного из представлений, изменяющих размеры автоматически или изменяющих положение при повороте, что в любом случае вам, вероятно, не следует. Я делаю это для изменения размера / перемещения по любой причине, а не только при повороте экрана.

0 голосов
/ 01 июня 2011

Единственный способ, которым один вид может поддерживать несколько ориентаций в IB, - это установить маску авторазмера компонентов либо в масштабе, либо в привязке к краям. Чтобы разработать совершенно разную компоновку для каждой ориентации, вам нужно создать портретную и альбомную ориентацию отдельно (каждая в своем собственном XIB) и программно переключаться между ними.

0 голосов
/ 26 июня 2009

Атрибуты AutoSize объектов IBOutlet в Инспекторе размеров IB (команда 3) предоставляют несколько довольно приятных опций для автоматического растяжения и позиционирования элементов. Вы можете контролировать положение экрана L / R и T / B, а также относительную ширину и высоту. Вы не можете получить полный контроль над макетом, но большинство основных операций там.

0 голосов
/ 27 октября 2008

Я не уверен на 100%, если это возможно, но вы рассматривали возможность использования различных контроллеров представления для пейзажа и портрета?

...