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,这些是苹果分配给他们的标志。 命令+点击一个来查看它的方法定义。