我的 UIView 中有一个 UILabel 对象。当它的 super View 大小发生变化时,我想让这个标签分别移动。这就像旧的 UIViewAutoresizingFlexibleTopMargin 、UIViewAutoresizingFlexibleRightMargin 、UIViewAutoresizingFlexibleBottomMargin 和 UIViewAutoresizingFlexibleLeftMargin ,这样如果 superview 的高度发生变化,标签上边距会分别改变,左边距也一样。
如何使用 Autolayout 而不是旧的 autoresizingmask 做到这一点?
Best Answer-推荐答案 strong>
您使用 NSLayoutConstraint 的 multiplier 属性来实现这一点。您不能将边缘属性与尺寸属性混合使用,但您可以使用底部和右侧边缘作为尺寸的代理。
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];
关于iOS:自动布局灵活边距,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/20720576/
|