0

我有一个支持 UIDeviceOrientationPortrait 和 UIDeviceOrientationLandscapeLeft 的 iPad 应用程序。

我确实包括了这个方法:

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

我遇到的问题是我需要它以 UIDeviceOrientationLandscapeLeft 模式加载,只是为了加载,因为我的 UI 控件将正确设置。我怎样才能在加载时只强制它一次。

我要注意的一件事是,这必须是最小的 iOS 5。

4

4 回答 4

1

即使这个答案不是你所期望的:

帮自己一个忙:强制设备进入特定方向确实很复杂。

你可以在这里搜索 SO,什么都有效,什么无效,在 6.1 中有效,在 6.01 中无效。等等。

所以最快和最安全的是,修复您的代码,使其可以在两个方向上正确初始化。

于 2013-01-31T21:38:08.093 回答
1

我最近遇到了类似的问题,但我想强制从横向更改为纵向,我知道在旧版本中有内置方法,但不幸的是,我们永远不确定何时以及什么对我们有用,但我尝试了这段代码它对我有用,但我的场景是强制从横向到纵向,这与您的场景相反,但无论如何它都有效,这可能是您场景的代码;

    -(NSUInteger)supportedInterfaceOrientations

{
    return UIInterfaceOrientationMaskLandscape;

}

-(void)viewWillAppear:(BOOL)animated {

    UIApplication* application = [UIApplication sharedApplication];

    if (application.statusBarOrientation != UIInterfaceOrientationLandscapeLeft)
    {
        UIViewController *c = [[UIViewController alloc]init];
        [self presentModalViewController:c animated:NO];
        [self dismissModalViewControllerAnimated:NO];
    }


    [super viewWillAppear:animated];
}

编辑在 IOS 6.1 上工作我添加了两个我在上一篇文章中没有添加的方法,现在我添加了所有适用于我的应用程序的方法......

- (BOOL)shouldAutorotate
{

    return NO;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return UIInterfaceOrientationLandscapeLeft;
}

这个想法是检查状态栏方向并添加和关闭一个modalViewController,它可以让我从一个方向强制到另一个方向。

于 2013-01-31T21:51:52.613 回答
0

在项目设置或信息文件中更新。
在 iOS 6.x 中,您应该覆盖supportedInterfaceOrientations. 也试试preferredInterfaceOrientationForPresentation

于 2013-01-31T20:41:23.390 回答
0

尽管有任何应用程序Info.plist设置或-shouldAutorotateToInterfaceOrientation:(或-shouldAutorotate)方法覆盖,视图控制器从纵向开始,然后由 iOS 旋转为横向。

是什么阻止了您的 UI 布局正确设置?

于 2013-01-31T20:52:02.127 回答