 <p>First of all, A lot depends on with which controller is your UIViewController embedded in.</p> <p>Eg, If its inside UINavigationController, then you might need to subclass that UINavigationController to override orientation methods like this.</p> <p>subclassed UINavigationController (the top viewcontroller of the hierarchy will take control of the orientation.) needs to be set it as self.window.rootViewController.</p> <pre><code>- (BOOL)shouldAutorotate { return self.topViewController.shouldAutorotate; } - (NSUInteger)supportedInterfaceOrientations { return self.topViewController.supportedInterfaceOrientations; } </code></pre> <p>From iOS 6, it is given that UINavigationController won't ask its UIVIewControllers for orientation support. Hence we would need to subclass it.</p> <p><strong>MOREOVER</strong></p> <p>Then, For UIViewControllers, in which you need only PORTRAIT mode, write these functions</p> <pre><code>- (BOOL)shouldAutorotate { return YES; } - (NSUInteger)supportedInterfaceOrientations { return (UIInterfaceOrientationMaskPortrait); } </code></pre> <p>For UIViewControllers, which require LANDSCAPE too, change masking to All.</p> <pre><code>- (NSUInteger)supportedInterfaceOrientations { return (UIInterfaceOrientationMaskAllButUpsideDown); //OR return (UIInterfaceOrientationMaskAll); } </code></pre> <p>Now, if you want to do some changes when Orientation changes, then use this function.</p> <pre><code>- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { } </code></pre> <p><strong>VERY IMPORTANT</strong></p> <p>in AppDelegate, write this. THIS IS VERY IMP.</p> <pre><code>- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { return (UIInterfaceOrientationMaskAll); } </code></pre> <p>If you want to provide only Portrait mode for all your viewcontrollers, then apply the portait mask. i.e UIInterfaceOrientationMaskPortrait</p> <p>Otherwise, if you want that some UIViewControllers stay in Portrait while others support all orientations, then apply an ALL Mask. i.e UIInterfaceOrientationMaskAll</p>