I've laid out some subviews with Interface Builder, but I'd like to do it in code instead.
I've read the UIView docs about setting the view.autoresizingMask
property. I'm looking for a logical explanation of how to translate the struts and springs by using the various masks offered (e.g., UIViewAutoresizingFlexibleLeftMargin
, etc).
Best Answer
When setting the autoresizing mask for a view, use a bitwise inclusive OR (
|
) (Objective-C), or an array (Swift 2, 3, 4) to specify springs and struts.Springs are represented by specifying a mask (Objective-C or Swift, respectively):
vertical spring:
UIViewAutoresizingFlexibleHeight
or.flexibleHeight
horizontal spring:
UIViewAutoresizingFlexibleWidth
or.flexibleWidth
Struts are represented by the lack of one of the four 'flexible margin' masks (i.e. if a strut does not exist, the mask for that margin is specified):
UIViewAutoresizingFlexibleLeftMargin
or.flexibleLeftMargin
UIViewAutoresizingFlexibleRightMargin
or.flexibleRightMargin
UIViewAutoresizingFlexibleTopMargin
or.flexibleTopMargin
UIViewAutoresizingFlexibleBottomMargin
or.flexibleBottomMargin
For example, a view with a horizontal spring and top and bottom struts would have the width, and left and right margins specified as flexible:
Swift 3 and 4
Swift 2
Swift 1.2
Objective-C