Rotation woes

I have been spending many frustrating hours trying to get rotations working on the iPhone version of Tunepal.

Firstly, I have a tab bar controller, with a navigation controller controlling each of the views. I actually only want one of my views to be able to rotate and that is the TuneDisplay. I have a subclassed the UITabBarController and overridden theshouldAutorotateToInterfaceOrientation:

– (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation {
if (self.selectedViewController != nil)
{
return [self.selectedViewController shouldAutorotateToInterfaceOrientation:interfaceOrientation];
}
else
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
}

In each of the view controllers for each of the tabs I have overridden the method and returned YES for each orientation I want to support. All well and good and everything works as it should. If I try and do a rotation on a tab that doesn’t support the rotation, nothing happens.

The problem occurs if I move from a tab thats rotated to a tab that isnt supposed to support that rotation. The new tab is displayed rotated too! Here is an example:

Normal Dislpay:

Rotated (by taping going to a rotated tab and then tapping on the tab for this, not autorotated):

Is there any way I can make it rotate back to portrait on tapping the tab?

I have tried the unsupported setOrientation trick, but firstly it doesnt work correctly and secondly I received a warning from Apple for including it in my last build.

If (as I suspect) there is no way to limit this behavior:

  • How do I make the microphone image scale when I rotate the device?
  • How  do I make the buttons and the progress bar expand to fit the witdh of the toolbar?

Also, one of the tabs that rotates ok has a table, with a search bar. The first time I rotate to the right or to the left, I get a black bar to the right of the search bar. If I subsequently rotate back and rotate again, the bar disappears! I have enabled the struts and springs things on the search bar in the interface builder and it looks like it should behave correctly. Any ideas about how to fix this?

Example the first time:

The next time I rotate:

Ideas feedback much appreciated

Bryan

4 thoughts on “Rotation woes

  1. Hi Bryan

    I had the same bug when my app was rotated, to solve the black bar problem in the right side try to put the [searhBar setNeedsLayout] in the willRotateToInterfaceOrientation method:

    – (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)to duration:(NSTimeInterval)duration {
    [searchBar setNeedsLayout];
    }

    []’s

Leave a comment