UIView autoresizingMask - Interface Builder to Code - 以编程方式创建struts和spring - Swift或Objective-C

时间:2012-05-06 05:33:54

标签: ios objective-c swift uiview autoresizingmask

我已经使用Interface Builder布局了一些子视图,但我想在代码中进行。

我已阅读有关设置view.autoresizingMask属性的UIView docs。我正在寻找一个合理的解释,说明如何使用提供的各种掩码(例如UIViewAutoresizingFlexibleLeftMargin等)来翻译struts和spring。

2 个答案:

答案 0 :(得分:125)

为视图设置自动调整遮罩时,使用按位包含OR(|)(Objective-C)或数组(Swift 2,3)指定弹簧和的支柱

  • 弹簧通过指定遮罩(分别为Objective-C或Swift 3)来表示:

    • 垂直弹簧:UIViewAutoresizingFlexibleHeight.flexibleHeight

    • 横向弹簧:UIViewAutoresizingFlexibleWidth.flexibleWidth

  • Struts 表示缺少四个“灵活边距”掩码中的一个(即如果不存在支柱,则指定该边距的掩码):

    • 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

<强>目标C

mySubview.autoresizingMask = (UIViewAutoresizingFlexibleWidth |    
                              UIViewAutoresizingFlexibleLeftMargin |  
                              UIViewAutoresizingFlexibleRightMargin);

enter image description here

答案 1 :(得分:9)

UIViewAutoResizingMask是我们所说的'struts'和'spring'。考虑一下:你有一个大方形,里面有一个小方块。为了使该正方形保持完美居中,您必须从大正方形的每个内边缘设置固定宽度,以便约束它。这些是支柱。

另一方面,

弹簧在旋转过程中更像UIView。假设我们的视图必须保持在屏幕的底部,在中心对齐(很像UIToolbar)。我们希望保持它的顶部弹簧灵活,以便当视图从460像素旋转到320像素时,它保持相对于屏幕现在改变的尺寸的相同位置。在IB中突出显示其中一个弹簧等于设置适当的UIViewAutoResizingMask并突出显示顶部弹簧特别类似于调用myView.autoResizingMask = UIViewAutoresizingFlexibleTopMargin

值可以通过将它们括在一对括号中并使用或myView.autoResizingMask = (UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin)

之类的运算符来串联使用

面具会向您报告数字,因为它们是NSUInteger的范围,而这些是苹果分配给它们的标志。 Cmd +单击一个以查看其方法定义。