0

我们使用以下代码在横向模式下对齐屏幕之一

    - (BOOL)shouldAutorotateToInterfaceOrientation:     
    (UIInterfaceOrientation)interfaceOrientation
    {
     return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
    }  

它在 5.1 模拟器(横向)中按预期显示,但
在 iPad 中以纵向模式显示。请建议

4

1 回答 1

0

这可能就是菲利普所指的问题。

然而,我注意到真实硬件的另一个问题——即使没有涉及 iOS 6——是排序略有不同。

如果您在视图控制器完全处理自己的旋转之前尝试从视图控制器访问模态视图控制器,则模态视图控制器将以纵向模式出现。在为它处理事件之前,第一个视图控制器还没有完全处理它自己的旋转。

换句话说,如果您尝试从视图控制器中的早期事件(例如viewWillAppear)中呈现模态视图控制器,它将始终以纵向模式显示。

要解决这个问题,不要立即显示视图控制器,只需使用块将其调度到主循环。

更改调用视图控制器的行,它可能看起来像这样:

[self performSegueWithIdentifier: @"firstRun" sender: self];

至:

dispatch_async(dispatch_get_main_queue(), ^{
    [self performSegueWithIdentifier: @"firstRun" sender: self];
});

如果您使用另一种方法来呈现新的视图控制器,请尝试使用相同的方法:将其包装dispatch_async到主队列中,以便稍后完成。

于 2012-09-16T18:44:59.127 回答