UIView autoresizingMask – Interface Builder to Code – Programmatically create struts and springs – Swift or Objective-C
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.
- How do I “legally” fade out the navigation bar in an app?
- iOS UIView Animation Issue
- Transition from UIView to SKView with crossdissolve animation messes up the scaleMode
- UIView transitionWithView doesn't work
- How can I create a UIView at a certain CGPoint?
- Nested UIScrollViews. Trying to get one to zoom out with the same speed and factor as the other zooming in. View frozen
2 Solutions Collect From Internet About “UIView autoresizingMask – Interface Builder to Code – Programmatically create struts and springs – Swift or Objective-C”
When setting the autoresizing mask for a view, use a bitwise inclusive OR (
|) (Objective-C), or an array (Swift 2, 3) to specify springs and struts.
Springs are represented by specifying a mask (Objective-C or Swift 3, respectively):
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):
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:
mySubview.autoresizingMask = [.flexibleWidth, .flexibleLeftMargin, .flexibleRightMargin]
mySubview.autoresizingMask = [.FlexibleWidth, .FlexibleLeftMargin, .FlexibleRightMargin]
mySubview.autoresizingMask = .FlexibleWidth | .FlexibleLeftMargin | .FlexibleRightMargin
mySubview.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin);
UIViewAutoResizingMasks are what we refer to as ‘struts’ and ‘springs’. Consider this: you have a large square with a small square inside. In order for that square to stay perfectly centered, you must set a fixed width from each inside edge of the large square, so as to constrain it. These are struts.
Springs, on the other hand, work more like a UIView does during rotation. Let’s say our view must stay on the bottom of the screen, aligned in the center (Much like a UIToolbar). We want to keep it’s Top spring flexible so that when the view rotates from 460 px to 320 px, it keeps it’s same position relative to the screen’s now changed dimensions. Highlighting one of those springs in IB is equal to setting the appropriate UIViewAutoResizingMask and highlighting the top spring specifically is akin to calling
myView.autoResizingMask = UIViewAutoresizingFlexibleTopMargin.
Values may be used in tandem by enclosing them in a pair of parenthesis and using an or operator like
myView.autoResizingMask = (UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin)
The masks are reporting numbers to you because they are a typdef of an NSUInteger and those are the flags that apple has assigned them. Cmd+click on one to see its method defintion.
- Why does averagePowerForChannel always return -160?
- TWTweetComposeViewController deprecated in IOS6
- Get image name UIImagePickerController in Swift
- object_setInstanceVariable with CGPoint
- Create space at the beginning of a UITextField
- Fast and Lean PDF Viewer for iPhone / iPad / iOs – tips and hints?
- How to define a “GeoPoint” property in Facebook SDK for iOS
- How to pass Prefs value data from view controller to inside table view cell with swift 3?
- objc_msgSend crash report sometimes from Crashlytics
- String to float in objective c
- How convert a *positive* number into an array of digits in Swift
- BSXPCMessage received error for message: Connection interrupted on CIContext with iOS 8
- Passing data between view controllers – iOS Xcode – what's a good way?
- Permission Denied on Xcode 4
- How to browse Core Data in my app running on my iPhone?