ipa*_*tch 2 objective-c ios autolayout
我一直在使用汽车布局几天,我试图将UILabel垂直和水平地放在屏幕中,但是我没有太多运气让标签居中.
我希望能够实现如下所示的东西,
---------------
| |
| |
| |
| |
| Label |
| |
| |
| |
| |
| SIGNIN REG |
---------------
Run Code Online (Sandbox Code Playgroud)
我向UILabel添加了以下约束,
NSLayoutConstraint *myLabelConstraintHeight = [NSLayoutConstraint constraintWithItem:myLabel
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0f
constant:100];
[myLabel addConstraint:myLabelConstraintHeight];
NSLayoutConstraint *myLabelConstraintWidth = [NSLayoutConstraint constraintWithItem:myLabel
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0f
constant:100];
[myLabel addConstraint:myLabelConstraintWidth];
Run Code Online (Sandbox Code Playgroud)
NSLayoutConstraint *centerX = [NSLayoutConstraint constraintWithItem:label
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:label.superview
attribute:NSLayoutAttributeCenterX
multiplier:1.0
constant:0.0];
NSLayoutConstraint *centerY = [NSLayoutConstraint constraintWithItem:label
attribute:NSLayoutAttributeCenterY
relatedBy:NSLayoutRelationEqual
toItem:label.superview
attribute:NSLayoutAttributeCenterY
multiplier:1.0
constant:0.0];
// No longer using [label addConstraints:@[centerX, centerY];
[NSLayoutConstraint activateConstraints:@[centerX, centerY]];
Run Code Online (Sandbox Code Playgroud)
更新:Apple现在希望您使用[NSLayoutConstraint activateConstraints:]而[NSLayoutConstraint deactivateConstraints:]不是使用[UIView addConstraint:]和[UIView removeConstraint:].
更新8/24/17:
可以使用布局锚点来完成更简单的版本:
[label.centerXAnchor constraintEqualToAnchor:label.superview.centerXAnchor].active = YES;
[label.centerYAnchor constraintEqualToAnchor:label.superview.centerYAnchor].active = YES;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2815 次 |
| 最近记录: |