Fixing parent controller's elements after screen orientation

Posted by Jonas Anderson on Stack Overflow See other posts from Stack Overflow or by Jonas Anderson
Published on 2011-01-16T19:44:49Z Indexed on 2011/01/16 19:53 UTC
Read the original article Hit count: 282

I have a tab bar application with mixed orientation support for only some views. One of the child view controller shown from one of the tab's navigation controller is displayed only in Landscape mode.

In order to accomplish this, I've done the view transformation for the child view as suggested here:

Is there a documented way to set the iPhone orientation?

The only problem I'm seeing is that after I've performed the orientation adjustment for the child controller and then readjusted orientation back to normal on its dismissal, the contents of the (parent) navigation controller is still shown with Landscape mode dimensions despite the navigation controller reporting the correct value for the interfaceOrientation.

How do I ensure that view's size is reset to match the orientation without hardcoding screen dimensions?

I have the following in the root navigation controller's viewWillAppear (invoked after the child controller is dismissed):

- (void)viewWillAppear:(BOOL)animated 
{

   NSLog(@"viewFrame: (%2f, %2f), width: %2f, height: %2f\n", 
 self.view.frame.origin.x, self.view.frame.origin.y, 
 self.view.frame.size.width, self.view.frame.size.height);

   // Frame values are (0, 0) for (x,y) width: 320, height: 367 before I 
   // displayed child controller. 

   // Frame values are (0,0) width: 480, height: 219 after returning from child 
   // controller -- still has the landscape dimensions

   NSLog(@"orientation: %d", self.interfaceOrientation); 
   // reports portrait as expected
}

I've tried to invoke 'layoutIfNeeded' as well as 'setNeedsDisplay' on the view but neither of them bring the view contents into the correct display.

Any suggestions would be greatly appreciated.

© Stack Overflow or respective owner

Related posts about iphone

Related posts about uitabbarcontroller