OStack程序员社区-中国程序员成长平台

标题: iOS:自动布局灵活边距 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 17:29
标题: iOS:自动布局灵活边距

我的 UIView 中有一个 UILabel 对象。当它的 super View 大小发生变化时,我想让这个标签分别移动。这就像旧的 UIViewAutoresizingFlexibleTopMarginUIViewAutoresizingFlexibleRightMarginUIViewAutoresizingFlexibleBottomMarginUIViewAutoresizingFlexibleLeftMargin,这样如果 superview 的高度发生变化,标签上边距会分别改变,左边距也一样。

如何使用 Autolayout 而不是旧的 autoresizingmask 做到这一点?



Best Answer-推荐答案


您使用 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/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4