我已经使用 Interface Builder 布置了一些 subview ,但我想改为在代码中完成。
我已阅读 UIView docs关于设置 view.autoresizingMask
属性。我正在寻找关于如何使用提供的各种掩码(例如 UIViewAutoresizingFlexibleLeftMargin
等)翻译 struts 和 springs 的逻辑解释.
最佳答案
在为 View 设置自动调整大小掩码时,使用按位包含 OR (|
) (Objective-C) 或数组 (Swift 2, 3, 4) 来指定 Spring 和 struts。
Spring 通过指定掩码来表示(分别为 Objective-C 或 Swift):
垂直 Spring :UIViewAutoresizingFlexibleHeight
或 .flexibleHeight
水平 Spring :UIViewAutoresizingFlexibleWidth
或 .flexibleWidth
Struts 表示缺少四个“灵活边距”掩码之一(即,如果支柱不存在,则指定该边距的掩码):
UIViewAutoresizingFlexibleLeftMargin
或 .flexibleLeftMargin
UIViewAutoresizingFlexibleRightMargin
或 .flexibleRightMargin
UIViewAutoresizingFlexibleTopMargin
或 .flexibleTopMargin
UIViewAutoresizingFlexibleBottomMargin
或 .flexibleBottomMargin
例如,具有水平 Spring 和顶部和底部支柱的 View 将具有指定为灵活的宽度和左右边距:
Swift 3 和 4
mySubview.autoresizingMask = [.flexibleWidth, .flexibleLeftMargin, .flexibleRightMargin]
swift 2
mySubview.autoresizingMask = [.FlexibleWidth, .FlexibleLeftMargin, .FlexibleRightMargin]
Swift 1.2
mySubview.autoresizingMask = .FlexibleWidth | .FlexibleLeftMargin | .FlexibleRightMargin
Objective-C
mySubview.autoresizingMask = (UIViewAutoresizingFlexibleWidth |
UIViewAutoresizingFlexibleLeftMargin |
UIViewAutoresizingFlexibleRightMargin);
https://stackoverflow.com/questions/10468389/