iOS:Autolayout灵活的利润

时间:2013-12-21 15:33:08

标签: ios autolayout

我的UILabel中有UIView个对象。当超级视图大小改变时,我想让这个标签分别移动。这类似于旧UIViewAutoresizingFlexibleTopMarginUIViewAutoresizingFlexibleRightMarginUIViewAutoresizingFlexibleBottomMarginUIViewAutoresizingFlexibleLeftMargin,因此如果超视图高度发生变化,标签上边距将分别改变,左边相同裕度。

如何使用Autolayout而不是旧autoresizingmask

执行此操作

1 个答案:

答案 0 :(得分:1)

使用NSLayoutConstraint的乘数属性来实现此目的。您不能将边缘属性与大小属性混合,但可以使用底边和右边作为大小的代理。

UIView * parent = [[UIView alloc] init];

UILabel * label = [[UILabel alloc] init];

[parent addSubview:label];
[label setTranslatesAutoresizingMaskIntoConstraints:NO];

//Label top stays at 20% of the height of the view
NSLayoutConstraint * topMargin = [NSLayoutConstraint constraintWithItem:label
                                                              attribute:NSLayoutAttributeTop 
                                                              relatedBy:NSLayoutRelationEqual
                                                                 toItem:parent
                                                              attribute:NSLayoutAttributeBottom
                                                             multiplier:0.2f
                                                               constant:0.0f];
[parent addConstraint:topMargin];