如何在一开始就检测到iPad的interfaceRotation?

时间:2010-08-01 17:07:39

标签: objective-c ipad statusbar viewdidload uiinterfaceorientation

我遇到问题让我的iPad应用程序在我初始化的第一个UIViewController(代码中)中检测到它的interfaceOrientation。事实上,如果我追踪application.statusBarOrientation,即使我在横向上启动,它也会返回1(UIInterfaceOrientationPortrait)。

如果我在第一个UIViewController中跟踪self.interfaceOrientation,它会一直保持为1,直到它到达viewWillDisappear ...不幸的是,这太晚了!

这是一些代码(尽管没什么可看的):

在我的appDelegate中,我有这个:

- (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;
}

跟踪1(肖像),即使我清楚地看到状态栏是横向...并且在第一个视图控制器中我有这个:

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

即使在横向模式下也会跟踪1。

有什么想法吗?难倒在这里!

谢谢:)

: - 乔

2 个答案:

答案 0 :(得分:2)

这是答案......有点:(来自Apple Dev论坛):.... “应用程序总是被加载,好像设备是纵向的,然后如果设备真的是风景,应用程序被告知设备已经旋转。这样做是为了使笔尖和代码只需要在一个方向创建他们的UI。否则可能需要为每个笔尖设置两个UI布局。“ ....这不是我喜欢的答案,但不幸的是iOS的运作方式!

答案 1 :(得分:0)

应用委托代表在applicationDidFinishLaunching中报告的内容是什么?因为如果它报告了正确的值,您始终可以访问该委托以检查方向。