Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I detect an iPad's interfaceRotation at the start?

I'm having problems getting my iPad app to detect its interfaceOrientation in the first UIViewController I initialize (in code). In fact, if I trace for application.statusBarOrientation, that too returns 1 (UIInterfaceOrientationPortrait) even if I launched in landscape.

If I trace self.interfaceOrientation in my first UIViewController, it remains 1 until it gets to viewWillDisappear... Which is unfortunately too late!

Here's some code (even though there's not much to see):

In my appDelegate I have this:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{    
     // show loading screen first
     [window addSubview:loadingScreenViewController.view];
     [window makeKeyAndVisible];

     NSLog(@"applicationDidBecomeActive:statusBarOrientation = %d", application.statusBarOrientation);
     return YES;
}

which traces 1 (portrait), even though I clearly see the status bar is landscape... and in the first view controller I have this:

- (void)viewDidLoad
{
    [super viewDidLoad];
     NSLog(@"self.interfaceOrientation = %d", self.interfaceOrientation);
}

which also traces 1, even in landscape mode.

Any ideas? Stumped here!

Thanks :)

:-Joe

like image 355
jowie Avatar asked Aug 01 '10 17:08

jowie


People also ask

How do I find screen rotation on my iPad?

How to rotate the screen on your iPad. Make sure Rotation Lock is turned off: swipe down from the top right-hand corner of your screen to open Control Centre. Then tap the Rotation Lock button to make sure it's turned off. Turn your iPad sideways.

How do you calibrate rotation on iPad?

Swipe down from the top-right corner of your screen to open Control Center. Tap the Portrait Orientation Lock button to make sure that it's off. Turn your iPhone sideways.


1 Answers

Here is the answer... Somewhat: (from Apple Dev Forums): .... "The app is always loaded as if the device is portrait, and then if the device is really landscape the app is told that the device has rotated. This is done so that nibs and code only need to create their UI in one orientation. Otherwise it might be necessary to have two UI layouts for each nib." .... it's not the answer I'd have liked, but that's how iOS works unfortunately!

like image 167
jowie Avatar answered Oct 21 '22 08:10

jowie