我的UILabel
中有UIView
个对象。当超级视图大小改变时,我想让这个标签分别移动。这类似于旧UIViewAutoresizingFlexibleTopMargin
,UIViewAutoresizingFlexibleRightMargin
,UIViewAutoresizingFlexibleBottomMargin
和UIViewAutoresizingFlexibleLeftMargin
,因此如果超视图高度发生变化,标签上边距将分别改变,左边相同裕度。
如何使用Autolayout
而不是旧autoresizingmask
?
答案 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];