以编程方式设置UIView的自动调整掩码?

Hir*_*ren 54 iphone objective-c uiview ios autoresizingmask

我必须以编程方式设置autoresizingMask UIView.

我不知道如何实现这一点.

在此输入图像描述

pni*_*zle 87

为了实现你在屏幕截图中所拥有的,你需要做与DrummerB建议相反的事情.你想要一个固定的上边距,这样你就可以使每一方都灵活:

目标C:

view.autoresizingMask = UIViewAutoresizingFlexibleRightMargin |
                        UIViewAutoresizingFlexibleLeftMargin |
                        UIViewAutoresizingFlexibleBottomMargin;
Run Code Online (Sandbox Code Playgroud)

在设置了侧灵活意味着,这将是固定的(默认行为),这就是为什么有是UIViewAutoResizingFixedTopMargin没有这样的事情(因为它同样不设置UIViewAutoresizingFlexibleTopMargin)

编辑Swift:

view.autoresizingMask = [.FlexibleRightMargin, .FlexibleLeftMargin, .FlexibleBottomMargin]
Run Code Online (Sandbox Code Playgroud)

感谢Tom Calmon添加swift版本1st.

干杯.

  • 谢谢@pnizzle!这应该是公认的答案! (2认同)

Dru*_*erB 23

您必须设置视图的autoresizingMask属性:

view.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;
Run Code Online (Sandbox Code Playgroud)

可能的值定义UIViewAutoresizing如下:

enum {
   UIViewAutoresizingNone                 = 0,
   UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,
   UIViewAutoresizingFlexibleWidth        = 1 << 1,
   UIViewAutoresizingFlexibleRightMargin  = 1 << 2,
   UIViewAutoresizingFlexibleTopMargin    = 1 << 3,
   UIViewAutoresizingFlexibleHeight       = 1 << 4,
   UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};
typedef NSUInteger UIViewAutoresizing;
Run Code Online (Sandbox Code Playgroud)

您可以使用按位OR运算符设置多个值|.

  • 虽然这个答案可以帮助那些想要了解UIAutoResizingMask可能值的人,但是提供的解决方案与屏幕截图中的不匹配.顶部边缘应固定,每隔一侧保持柔性(不是宽度或高度,只是侧面).请参阅我的答案以获得与屏幕截图相匹配的解 (4认同)

Tho*_*mon 21

Swift 2.0:

view.autoresizingMask = [.FlexibleRightMargin, .FlexibleLeftMargin, .FlexibleBottomMargin]
Run Code Online (Sandbox Code Playgroud)


Jim*_*y_m 6

斯威夫特 4.1:

view.autoresizingMask = [.flexibleHeight, .flexibleWidth, .flexibleTopMargin, .flexibleRightMargin, .flexibleLeftMargin, .flexibleBottomMargin]
Run Code Online (Sandbox Code Playgroud)