Центрирование с автоматической компоновкой Xcode

Я разрабатываю быстрое приложение и разрабатываю интерфейс в конструкторе интерфейсов в Xcode. Мой интерфейс (который состоит из двух UILabels, отлично выглядит в портретном режиме, но выглядит ужасно в ландшафтном режиме.

Проблема в том, что метки не будут оставаться в центре, как я хочу, при вращении. Я использовал следующие ограничения автоматического макета:

Upper edge constraint: top layout guide 
Lower edge constraint: bottom layout guide
Right edge constraint: standard value
Left edge constraint: standard value

Эти настройки не должны работать, так как этикетка не остается в центре при вращении. Каковы правильные ограничения для использования автоматического макета для центрирования этой метки?


person rocket101    schedule 01.08.2014    source источник


Ответы (1)


Добиться нужного эффекта можно в конструкторе интерфейсов, я бы советовал делать это с помощью программного ограничения автомакета.

[self.view addConstraint: [NSLayoutConstraint
    constraintWithItem:self.view 
    attribute:NSLayoutAttributeCenterX 
    relatedBy:NSLayoutRelationEqual 
    toItem:"YOUR VIEW" 
    attribute:NSLayoutAttributeCenterX 
    multiplier:1
    constant:0]];

Приведенный выше атрибут NSLayoutAttributeCenterX центрировал «ВАШЕ ПРЕДСТАВЛЕНИЕ» по горизонтали. Для вертикального центрированного макета вы можете сделать это, изменив свойство атрибута на NSLayoutAttributeCenterY как для self.view, так и для «ВАШЕГО ПРОСМОТРА».

person ldindu    schedule 01.08.2014
comment
Спасибо! Несколько вопросов - могу ли я сделать центр кода одновременно в горизонтальной и вертикальной ориентации? Кроме того, где я могу разместить код выше? Только под IBoutlet или еще куда? Извините, я только учусь быстро! - person rocket101; 02.08.2014
comment
Боюсь, вы не можете, насколько я знаю. Вам нужно установить ограничение дважды для горизонтального и вертикального центрирования. Код должен быть помещен в метод viewDidLoad. - person ldindu; 03.08.2014