1
votes

I would like to rotate a ViewController based on some condition. The problem with shouldAutorotateToInterfaceOrientation is that the view always start with portrait/landscape orientation (as set in Interface Builder) and the user has to rotate the ipad to use the correct mode.... How can I change this behavior? Thank you.

3

3 Answers

1
votes

Apply a transform to the view.

view.transform = CGAffineTransformMakeRotation(M_PI);

You can use UIView animations to animate the change.

1
votes

You could also try adding this in your info.plist:

<key>UISupportedInterfaceOrientations</key>
<array>
    <string>UIInterfaceOrientationPortrait</string>
    <string>UIInterfaceOrientationPortraitUpsideDown</string>
    <string>UIInterfaceOrientationLandscapeLeft</string>
    <string>UIInterfaceOrientationLandscapeRight</string>
</array>

Source: ipad default-landscape not displaying

0
votes
[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationPortrait];

This will change orientation to potrait mode without rotating the device.Likewise you can use for landscape also