Попробуйте добавить UIViewAutoresizingFlexibleWidth
на панель инструментов autoresizingMask
примерно так:
myToolbar.autoresizingMask |= UIViewAutoresizingFlexibleWidth
Или, если вы делаете это в Интерфейсном Разработчике, убедитесь, что выбрана эта горизонтальная полоса (могут быть выбраны и другие, что тоже хорошо):
Больше от UIView
Ссылка на класс о autoresizingMask
:
Когда границы представления изменяются, это представление автоматически изменяет свой размер
подпредставления в соответствии с маской авторазмера каждого подпредставления. Вы указываете
значение этой маски путем объединения констант, описанных в
UIViewAutoresizing
с использованием оператора C побитового ИЛИ. Объединяя эти
константы позволяют указать, какие размеры представления должны расти или
сжать по отношению к суперпредставлению. Значение по умолчанию этого свойства
UIViewAutoresizingNone
, что означает, что представление не должно
изменил размеры вообще.
Если установлено несколько параметров вдоль одной оси, по умолчанию
поведение заключается в том, чтобы пропорционально распределить разницу в размерах между
гибкие порции. Чем больше гибкая часть относительно
другие гибкие части, тем больше он может расти. Например,
Предположим, что это свойство включает в себя UIViewAutoresizingFlexibleWidth
и
UIViewAutoresizingFlexibleRightMargin
константы, но не включают
константа UIViewAutoresizingFlexibleLeftMargin
, что указывает на
что ширина левого поля вида фиксирована, но вид
ширина и правое поле могут измениться. Таким образом, вид кажется привязанным к
левая сторона его суперпредставления в то время как ширина вида и зазор
справа от увеличения зрения.
Если поведение авторазмера не предлагает точный макет, который вы
нужно для ваших представлений, вы можете использовать пользовательский вид контейнера и переопределить
его layoutSubviews
метод для более точного позиционирования ваших подпредставлений.