2015-03-12 2 views
0

Как вертикально (по оси Y) центрировать UILabel внутри своего родительского UIView без изменения горизонтального положения UILabel?Вертикальный центр UILabel в родительском UIView

Следующая не так (она меняет ось х):

[self.label setCenter:CGPointMake(view.frame.size.width/2, view.frame.size.height/2)] 

Опять же, я смотрю в центр вдоль оси у.

ответ

1
CGPoint center = self.label.center; 
center.y = view.frame.size.height/2; 
[self.label setCenter:center]; 
+0

Нет. Этого не делалось. –

+0

Что он сделал? Как в чем был выход? – uchiha

+1

Ничего не изменилось. Но потом я понял, что математика немного сбита. Но ваша общая идея правильная, поэтому спасибо. Правильная математика - 'CGFloat padding = (parent.frame.size.height-self.label.frame.size.height)/2; center.y + = padding; ' –

0

Я бы скорее рекомендовал применять ограничения автоопределения в этом случае. Приведенное ниже ограничение будет выровнено по вертикали в центре родительского представления. Во втором ограничении я сохраняю значение 20 как координату x. Вы можете заменить его своим значением.

NSLayoutConstraint *constraintY = [NSLayoutConstraint constraintWithItem:self.label attribute:NSLayoutAttributeCenterY 
         relatedBy:NSLayoutRelationEqual toItem:view 
         attribute:NSLayoutAttributeCenterY multiplier:1.0 constant:0.0]; 
[view addConstraint:constraintY]; 
NSLayoutConstraint *constraintX = [NSLayoutConstraint constraintWithItem:self.label attribute:NSLayoutAttributeLeading 
          relatedBy:NSLayoutRelationEqual toItem:view 
          attribute:NSLayoutAttributeLeading multiplier:1.0 constant:20.0]; 
[view addConstraint:constraintX]; 
Смежные вопросы