Autolayout and Device Orientation

rokridi picture rokridi · Dec 3, 2013 · Viewed 7.2k times · Source

I am developing an application which supports portrait and landscape modes. I am using auto layout to arrange my views. As i have been reading many posts and i have realized that developers commonly use one among the following approaches.

1. First approach:

Implement the UIViewController:updateConstraints method and update constraints according to device orientation.

2. Second approach:

Implement the UIViewController:viewWillLayoutSubviews method and update constraints according to device orientation.

Could anyone please tell me what is the best approach to use ? I have been searching for a best practice to combine autorotation and auto layout and nothing yet. Thanks.

Answer

Fr4ncis picture Fr4ncis · Dec 3, 2013

I would use this UIViewController's method:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration;

that is called upon rotation, and call -setNeedsUpdateConstraints from there. If you need to do additional calculations or manage the contrainsts add

- (void)updateViewConstraints
{
    [super updateViewConstraints];
    // do calculations if needed, like set constants
}