2014-11-01 2 views
0

Я использую старый способ делать что-то довольно долго, задавая исходное положение и размер на отдельных кадрах и помещая вещи точно, как я хочу их на экране. Теперь я пытаюсь перейти к использованию AutoLayout. Но у меня немного проблемы, и я не могу найти точный ответ.Использование AutoLayout в пользовательских представлениях против контроллеров View

Я использую в основном код для создания представлений и просмотра контроллеров. Таким образом, я знаком с созданием пользовательских классов представления, которые сочетают в себе несколько представлений по своему вкусу. Например, у меня есть настраиваемый профиль Pin Pin, который объединяет UIImageView и UILabel в одно представление для представления profileImage и имени пользователя. Затем я использую эти пользовательские представления в разных местах как часть других представлений и контроллеров представлений.

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

Мой вопрос: должен ли я быть дотошным и использовать автозапуск для пользовательских представлений, имеющих статическое размещение и размеры? Как и UIImageVIew и вид UILabel в представлении Pin Pin, который я описал? Позиции для UIImageView и просмотра UILabel не изменятся, но позиция для представления Pin Pin (их родителя), вероятно, будет. Должен ли я использовать Autolayout для всего? Или это не та ситуация, для которой предназначался AutoLayout?

+0

Autolayout очень полезен в любое время, когда вы хотите, чтобы ваш макет зависел от супервизора, что ваши взгляды внутри. Например, если вы всегда хотите, чтобы ваши представления располагались на определенном расстоянии от краев супервизора, или если вы хотите, чтобы ваши представления имели границы относительно надстройки. – rfj001

ответ

1

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

Что вы, , должны сделать, однако, переопределить intrinsicContentSize и вернуть правильный размер. Это позволяет любому родительскому представлению использовать Autolayout для размещения и определения размера вашего пользовательского представления.

Многие компоненты UIKit используют эту технику - UISwitch является ярким примером.

+0

Ahh. Это то, что я надеялся услышать. Спасибо! – projectnard

Смежные вопросы