强制UIViewController方向

时间:2012-03-20 17:32:18

标签: iphone uiviewcontroller

我做了一些研究,但似乎找不到让我的navigationController的rootViewController在启动时正确的答案。我原来的问题在这里:launch orientation of iPad is incorrect for landscape orientation (upside down)

在我的info.plist中,我将它设置为支持横向方向。如果我将rootViewController更改为:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
//    return UIInterfaceOrientationIsLandscape(interfaceOrientation); // original that does not work
    return YES;
}

然后我的应用程序以正确的方向开始。但是,我不想支持肖像模式。我只想支持景观模式。我以为我可以通过这样的方式强制方向并防止它切换到纵向模式:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) {
        UIDeviceOrientation orientation = UIInterfaceOrientationLandscapeLeft;
        [UIApplication sharedApplication].statusBarOrientation = orientation;
    }
    else {

    }

但这并不妨碍应用程序旋转到纵向模式。是否可以强制定位?为了使启动方向正确(仅限横向模式),我还需要做些什么吗?谢谢!

1 个答案:

答案 0 :(得分:1)

我刚刚创建了一个示例项目,将我的支持接口方向(iPad)设置为Landscape Left和Landscape Right(在info.plist中)。

然后我用了:

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

它工作正常。无论我如何旋转它都被迫风景。

您是否有可见的其他视图控制器可能会向所有方向返回YES?这可能会让人感到困惑。