title: "[[UIApplication sharedApplication] statusBarOrientation]; gives wrong value in the first call"
body: <p>I'm working on an iPad app that start with a splash screen and then moves to the login screen. My app should support all the orientation, and iOS 4.3 and later. To do that, I added the four orientations in the plist, and the following code in the app delegate:</p>
  
  <pre><code>- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
      [self.window makeKeyAndVisible]; 
      // Override point for customization after application launch
      SplashViewController *aController = [[SplashViewController alloc] initWithNibName:@"SplashView" bundle:nil];
      self.mainViewController = aController;
      [aController release];
  
      mainViewController.view.frame = [UIScreen mainScreen].bounds;// no effect
      [window setFrame:[[UIScreen mainScreen] bounds]]; //no effect
      //[window addSubview:[mainViewController view]];
      [window setRootViewController:mainViewController];
  
      return YES;
  }
  
  - (NSUInteger)application:(UIApplication *)application     supportedInterfaceOrientationsForWindow:(UIWindow *)window{
  
      return UIInterfaceOrientationMaskAll;
  }
  </code></pre>
  
  <p>In the splash screen</p>
  
  <pre><code>- (void) loadView {
      [super loadView];
      [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged) name:@"UIDeviceOrientationDidChangeNotification" object:nil];
  
  }
  - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
          return YES;
  }
  - (BOOL)shouldAutorotate{
      return YES;
  }
  -(NSUInteger)supportedInterfaceOrientations
  {
      return UIInterfaceOrientationMaskAll;
  }
  - (void) orientationChanged
  {
      UIInterfaceOrientation interfaceOrientation =[[UIApplication sharedApplication] statusBarOrientation];
      if (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
              NSLog(@"Portrait");
      else
              NSLog(@"Landscape");
  
  }
  </code></pre>
  
  <p>Here I get the correct orientation but when rotating, I get an inverted result, I get landscape for portrait and portrait for landscape. I tried to convert the code like this:</p>
  
  <pre><code>- (void) orientationChanged
  {
      UIInterfaceOrientation interfaceOrientation =[[UIApplication sharedApplication] statusBarOrientation];
      if (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
              NSLog(@"Landscape");
      else
              NSLog(@"Portrait");
  
  }
  </code></pre>
  
  <p>I get the first result wrong, after that the result is correct. can you help?
  note that I have put some uielement to test and the test come with the same result.
  Thank you</p>