我阅读了有关设置
view.autoresizingMask
属性的UIView文档。我正在寻找如何通过使用提供的各种掩码(例如UIViewAutoresizingFlexibleLeftMargin
等)来翻译struts和springs的逻辑解释。view.autoresizingMask
属性的UIView文档。我正在寻找如何通过使用提供的各种掩码(例如UIViewAutoresizingFlexibleLeftMargin
等)来翻译struts和springs的逻辑解释。当设置视图的自动调整大小掩码时,使用按位包含 OR (|
) (Objective-C),或使用数组 (Swift 2, 3, 4) 来指定弹簧和支撑。
弹簧通过指定掩码来表示(分别在Objective-C或Swift中):
垂直弹簧: UIViewAutoresizingFlexibleHeight
或 .flexibleHeight
水平弹簧: UIViewAutoresizingFlexibleWidth
或 .flexibleWidth
支撑通过缺少四个“ 弹性边距 ”掩码中的一个来表示(即如果不存在支撑,则会指定该边距的掩码):
UIViewAutoresizingFlexibleLeftMargin
或 .flexibleLeftMargin
UIViewAutoresizingFlexibleRightMargin
或 .flexibleRightMargin
UIViewAutoresizingFlexibleTopMargin
或 .flexibleTopMargin
UIViewAutoresizingFlexibleBottomMargin
或 .flexibleBottomMargin
例如,具有水平弹簧和顶部和底部支撑的视图将具有指定为可伸缩的宽度、左右边距:
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);
UIViewAutoResizingMask
被称为“支撑”和“拉伸”。考虑这样一个情况:你有一个大正方形,里面有一个小正方形。为了让小正方形保持完美的居中,你必须设置大正方形每个内侧边缘的固定宽度来限制它。这些就是“支撑”。
而“拉伸”则更像UIView
在旋转过程中的行为。假设我们的视图必须保持在屏幕底部,与屏幕中央对齐(就像UIToolbar
一样)。我们想要将其顶部弹簧设置为灵活的,这样当视图从460像素旋转到320像素时,它仍然相对于屏幕保持相同的位置。在IB中突出显示其中一个弹簧,等同于设置适当的UIViewAutoResizingMask
,特别是突出显示顶部弹簧就类似于调用myView.autoResizingMask = UIViewAutoresizingFlexibleTopMargin
。
这些值可以同时使用,在括号中使用或运算符,例如:myView.autoResizingMask = (UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin)
这些掩码向你报告数字,因为它们是NSUInteger
的typedef,并且这些标记是由苹果分配的。在其中一个上使用Cmd+单击可查看其方法定义。