Обновлен старый ответ, в котором упоминаются только маски изменения размера
Autolayout (iOS 6)
В iOS 6 была добавлена функция автоматического размещения, хотя и довольно уродливо для работы с XCode в раскадровке / XIB. Autolayout слишком велик, чтобы объяснить, но суть его в том, что это набор правил между представлениями в иерархии. Таким образом, вы можете прикрепить положение вида к правой границе родительского вида. См. Руководство по программированию Auto Layout
Маски с автоматическим изменением размера (iOS 2)
Посмотрите параметры в Инспекторе размеров:
Это эквивалентно действию
myView.autoresizingMask = UIViewAutoresizingMaskFlexibleTopMargin |
UIViewAutoresizingMaskFlexibleLeftMargin |
UIViewAutoresizingMaskFlexibleWidth |
UIViewAutoresizingMaskFlexibleHeight;
Обратите внимание, что есть разница между выполнением кода и IB. Параметры автоматического изменения размера IB для границ работают как распорки, выбор правильной, например, означает, что «моя правая граница теперь привязана к правой границе суперпредставления».
С другой стороны, код делает противоположное, где вам нужно указать, какие границы не распостранены, иначе. они гибкие. Высота и ширина работает нормально.
Layout Subviews (iOS 2, но есть ошибки для iOS5 +)
Если все не получается, не начинайте делать ручное позиционирование повсеместно, я был в этой позиции, и это просто приводит к нереализуемому спагетти-коду, где три или более метода работают с одинаковыми свойствами представления.
Вместо этого предпочитайте делать все свои собственные настройки на UIView -layoutSubviews
. Этот метод вызывается по мере необходимости, когда setNeedsLayout
запущен, например, когда ширина представления изменяется, подпредставления получают событие подпредставлений макета. Также значительно упрощает реализацию вращающихся интерфейсов, поскольку этот метод вызывается для новой ширины, чтобы определить, как будет выглядеть анимация.
Имейте в виду, что подпредставления макета работают после выполнения масок автоматического макета / автоматического изменения размера.