2015-03-26 4 views
2

Я хочу переменную высоту просмотра на разных экранах. Предположим, что я хочу, чтобы высота 80px выглядела на 3,5-дюймовом экране.iOS autolayout multiple height

100px в 4,0-дюймовый экран

120px в 4,5-дюймовый экран

и 140 в 4,7-дюймовым экраном.

Каков наилучший способ достичь этого с помощью автовыключения?

ответ

0

Совместите вид с AutoLayout, например, чтобы сверху и по бокам, чтобы это SuperView, но установить фиксированное ограничение высоты, как это:

enter image description here

Затем создать выход для высоты ограничения. В своем классе вы можете изменить высоту теперь:

self.myHeightConstraint.constant = 120; 

редактирования: а у вас есть, чтобы отменить «Ширина» галочки, не заметил, он был выбран, когда я создал скриншот ...

0

Создайте IBOutlet на ограничение высоты представления. После этого вы сможете установить константу ограничения в коде (после проверки высоты экрана). Конечно, вы также должны установить ваши другие ограничения тоже однако иметь в виду, что ваша высота вид будет меняться (или совершить ограничения с возможными конфликтами в виду)

экс (Свифт):

let height = self.view.frame.size.height 
if height == 568 { //iPhone 5 size 

    self.viewHeight_Constraint.constant = 120.0 
    self.myView.layoutIfNeeded(); 

} 

У меня был успех с layoutIfNeeded, но посмотрите на вопрос here для обоснования.

0

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

Вы можете сделать это с помощью кода или Interface Builder

- (void) viewWillAppear:(BOOL)animated 
{ 

NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:upperview 
                  attribute:NSLayoutAttributeHeight 
                  relatedBy:0 
                   toItem:self.view 
                  attribute:NSLayoutAttributeHeight 
                  multiplier:.5 
                   constant:0]; 
[self.view addConstraint:constraint]; 
}