2013-09-01 3 views
0

Я пытаюсь выяснить, как вертикально вертикально просматривать, используя Auto-Layout. Я новичок в этой технологии, так как она делает мне какие-то проблемы ... Это мой контроллер в Interface Builder: enter image description hereПо вертикали в центре подвью с использованием автоматической компоновки

Серая часть является SuperView и содержит пользовательское представление (желтая) и ярлык (красный); желтый вид фиксируется в нижней части надзора и имеет фиксированную высоту и ширину. Красный вид также имеет фиксированную ширину и высоту.

Моя цель - вертикально центрировать мой красный вид в видимой части серого вида, чья видимая высота superview.height - yellowView.height. Как я могу это сделать?
Большое вам спасибо!

+0

Нужно ли вам красное представление, чтобы оставаться на разных экранах и при вращении? – rdelmar

+0

Различные размеры экрана – matteodv

ответ

2

Самый простой способ сделать это, должен был бы сделать серый вид на подвид основного зрения тоже, и тогда вы можете просто дать метка - ограничение по центру в IB или в коде. Если вы не можете так по какой-то причине, вы можете изменить постоянное значение ограничения centerY в коде, давая ему значение 1/2 высоты желтого вида. Дайте ярлыку ограничение по центру в IB и сделайте IBOutlet (я называю его centerCon в моем примере). Фиксированная высота моего желтого вида составляла 200.

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.centerCon.constant = 100; 
} 
+0

Я использую ваше решение ... Теперь я чувствую себя немного увереннее в Auto-Layout! Спасибо;) – matteodv

+0

@matteodv, я не знаю, когда вы увидели мой ответ, но я отредактировал его, чтобы показать еще более простой способ. – rdelmar

-3

Один из самых простых решений здесь будет выглядеть следующим образом:

redView.center = CGPointMake(superview.width/2, (superview.height - yellowView.height)/2); 
+3

Я знаю, что я могу установить его центр таким образом, но мой вопрос состоит в том, чтобы центрировать его с помощью Auto-Layouts и IB ... – matteodv

+0

Это не сработает, когда используется макет, основанный на ограничениях. – marko

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