UIView autoresizingMask – 接口生成器到代码 – 编程创buildstruts和弹簧 – Swift或Objective-C
我已经介绍了一些与Interface Builder的子视图,但是我想用代码来完成。
我读过有关设置view.autoresizingMask属性的UIView文档 。 我正在寻找一个合理的解释,如何通过使用提供的各种口罩(如UIViewAutoresizingFlexibleLeftMargin
等)来翻译struts和弹簧。
为视图设置自动识别遮罩时,使用包含OR( |
)(Objective-C)或数组(Swift 2,3)来指定弹簧和支撑 。
-
弹簧通过指定掩码(分别为Objective-C或Swift 3)来表示:
-
垂直弹簧:
UIViewAutoresizingFlexibleHeight
或.flexibleHeight
-
水平弹簧:
UIViewAutoresizingFlexibleWidth
或.flexibleWidth
-
-
Struts是由缺less四个“灵活边缘”掩码中的一个来表示的(即,如果不存在支撑,则指定该边距的掩码):
-
UIViewAutoresizingFlexibleLeftMargin
或.flexibleLeftMargin
-
UIViewAutoresizingFlexibleRightMargin
或.flexibleRightMargin
-
UIViewAutoresizingFlexibleTopMargin
或.flexibleTopMargin
-
UIViewAutoresizingFlexibleBottomMargin
或.flexibleBottomMargin
-
例如,具有水平弹簧和顶部和底部支柱的视图将具有宽度,并且指定左侧和右侧边界为灵活的:
Swift 3
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);
UIViewAutoResizingMasks就是我们所说的“struts”和“springs”。 考虑一下:你有一个大广场,里面有一个小广场。 为了使这个正方形保持完全居中,你必须从大正方形的每个内边缘设定一个固定的宽度,以约束它。 这些是支柱。
另一方面,弹簧在旋转过程中更像UIView。 假设我们的视图必须停留在屏幕的底部,并与中心alignment(就像UIToolbar一样)。 我们希望保持顶级的弹簧灵活性,当视图从460像素旋转到320像素时,相对于屏幕现在更改的尺寸,它保持相同的位置。 在IB中突出显示其中的一个弹簧等于设置适当的UIViewAutoResizingMask,并突出显示顶部的弹簧,特别类似于调用myView.autoResizingMask = UIViewAutoresizingFlexibleTopMargin
。
值可以通过将它们放在一对括号中并使用或运算符myView.autoResizingMask = (UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin)
掩码向你报告数字,因为它们是一个NSUInteger的typdef,这些是苹果分配给他们的标志。 命令+点击一个来查看它的方法定义。