Цель C: Адаптивная панель инструментов при изменении ориентации - PullRequest
3 голосов
/ 17 ноября 2011

У меня проблема с панелью инструментов, когда я меняю ориентацию своего iPad.

Я установил файл пера в альбомную ориентацию, и все в порядке, но когда я повернул его в портретную ориентацию, моя панель инструментов все еще имеетширина от альбомной ориентации.

как мне сделать мою панель инструментов адаптивной к изменению ориентации на портретную?

Пейзаж: enter image description here

Портрет:

enter image description here

спасибо!

Ответы [ 2 ]

3 голосов
/ 17 ноября 2011

Попробуйте добавить UIViewAutoresizingFlexibleWidth на панель инструментов autoresizingMask примерно так:

myToolbar.autoresizingMask |= UIViewAutoresizingFlexibleWidth

Или, если вы делаете это в Интерфейсном Разработчике, убедитесь, что выбрана эта горизонтальная полоса (могут быть выбраны и другие, что тоже хорошо):

enter image description here

Больше от UIView Ссылка на класс о autoresizingMask:

Когда границы представления изменяются, это представление автоматически изменяет свой размер подпредставления в соответствии с маской авторазмера каждого подпредставления. Вы указываете значение этой маски путем объединения констант, описанных в UIViewAutoresizing с использованием оператора C побитового ИЛИ. Объединяя эти константы позволяют указать, какие размеры представления должны расти или сжать по отношению к суперпредставлению. Значение по умолчанию этого свойства UIViewAutoresizingNone, что означает, что представление не должно изменил размеры вообще.

Если установлено несколько параметров вдоль одной оси, по умолчанию поведение заключается в том, чтобы пропорционально распределить разницу в размерах между гибкие порции. Чем больше гибкая часть относительно другие гибкие части, тем больше он может расти. Например, Предположим, что это свойство включает в себя UIViewAutoresizingFlexibleWidth и UIViewAutoresizingFlexibleRightMargin константы, но не включают константа UIViewAutoresizingFlexibleLeftMargin, что указывает на что ширина левого поля вида фиксирована, но вид ширина и правое поле могут измениться. Таким образом, вид кажется привязанным к левая сторона его суперпредставления в то время как ширина вида и зазор справа от увеличения зрения.

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

1 голос
/ 17 ноября 2011

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

Затем во время изменения ориентации вы можете установить соответствующий массив элементов панели инструментов.

Удачи

...