2015-06-11 2 views
0

У меня есть вид контейнера, показывающий боковую панель, прикрепленную к передней кромке основных видов. Боковая панель является начальной видимой, что отлично подходит для iPads, однако я бы хотел, чтобы она была спрятана первоначально для небольших устройств. Для этого мне нужно установить ограничение на конечную границу боковых полос (0 - его собственную ширину)Позиция компоновщика интерфейса с экрана

Насколько я вижу, это невозможно в построителе интерфейса. Я попытался сделать это в viewDidLoad, проверяя, является ли устройство iPhone, прежде чем делать self.sidebarX.constant = -self.sidebar.frame.width. Это невозможно, поскольку viewDidLoad еще не настроил представления, поэтому ширина неверна. Я также пытался сделать это в viewDidLayoutSubviews, однако пользователь видит, что боковая панель исчезает, что не очень приятно. Я уверен, что должен быть общий способ справиться с этим?

ответ

0

Вы можете установить это с помощью Xcode адаптивного макета:

enter image description here

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

Вы можете установить расположение одного объекта в различных типах экрана с помощью диалогового окна ниже:

enter image description here

Посмотрите в этом 2-х частей учебник от raywenderlich part 1part 2

+0

Если вы имеете в виду viewWillAppear, тогда да, но та же проблема :( –

+0

Но как я могу использовать это, чтобы установить начальное ограничение на фронт, чтобы оно было меньше ширины боковых панелей, поэтому оно изначально выключено? –

+0

Изменения, внесенные вами одним типом не влияет на другое, поэтому вы можете просто изменить, и когда вы переходите от одного к другому, у них будут разные значения. – Icaro

1

я, наконец, работал его вне. viewDidLayoutSubviews было правильным местом для этого. Сначала, когда я попробовал, он показывал, что боковая панель скользит, когда загружен контроллер вида. Оказывается, это потому, что я вызывал метод closeSidebar, который анимирует боковую панель, движущуюся с экрана. Изменив это, он просто устанавливает вид с экрана и добавляет проверку, чтобы это было сделано только один раз при первой загрузке (поскольку viewDidLayoutSubviews вызывается несколько раз) выполняет задание скрывать боковую панель для определенных устройств, не видя, что это происходит.