Search code examples
iosxcodeios6xcode4.5autolayout

Where to set translatesAutoresizingMaskIntoConstraints in Xcode 4.5


I need to set translatesAutoresizingMaskIntoConstraints to NO. By default it is set to YES (to assist with the majority of apps that are transitioning from struts and springs to the new Auto Layout).

Is there somewhere in Xcode where the default can be changed from YES to NO?

Or do I have to manually set it for every view?


Solution

  • This is a great question - and one I've tried to find an answer to myself. Sadly, it looks like there is no "quick fix". Currently, Apple considers Constraint-based layout Opt-in - even naming a section of the UIView Class Reference:

    Opting in to Constraint-Based Layout

    But that Opt-in is not global. I presume this is because not everything looks good if you just turn Springs & Struts into Constraints. Some UI elements break, or you would get a ton of unsatisfiable constraints errors.

    I can think of one possible solution - I have not tried it myself, but you could make a category on UIView that sets all UIView objects to return NO for - (BOOL)translatesAutoresizingMaskIntoConstraints. While I do not know what this would break, it would globally set translatesAutoresizingMaskIntoConstraints to NO.

    Here is a good introduction to Categories if you want to learn more about them!