当您有不同的方向屏幕时,iOS自动旋转不起作用

时间:2018-03-05 12:55:37

标签: ios objective-c device uiinterfaceorientation shouldautorotate

我正在开发一个用Objective-C编写的应用程序。我有更多屏幕,所有屏幕都是横向左侧和横向右侧方向,这些屏幕不能处于纵向模式。但我有3个不同的屏幕应该只在纵向模式下不能处于横向左侧或右侧。

这是所有屏幕的横向模式代码 -

This is the code for Landscape mode for all screens

这适用于我的应用的纵向模式

Portrait mode

这些都是我在View Controllers和In app Plist中所做的,我添加了所需的方向,例如This Info.plist

Plist info

应用设备方向将自动更改。像这样 -  Device orientation

我很确定一切都很清楚并且应该按预期工作但由于某些原因当我使用应用程序并锁定自动旋转并运行应用程序时,它会自动在纵向模式下打开,当我解锁自动旋转时它会在横向和旋转它将旋转到纵向模式。我使用了shouldAutorate返回YES,因为它应该在Landscape Left和Landscape Right之间自动旋转所以我用它也是肖像模式屏幕在Portrait中打开但是当用户旋转设备时它是自动旋转。

任何帮助将不胜感激,请分享任何想法为什么我的应用程序没有按预期工作。

1 个答案:

答案 0 :(得分:0)

以下是解决此问题的步骤:

  1. 从plist中删除方向,因为它会覆盖视图控制器中的任何逻辑。

  2. 将代码保留在具有横向方向的代码下方:

    -(BOOL)shouldAutorotate {
        return YES;
    }
    
    -(NSUInteger)supportedInterfaceOrientations
    {
        return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight;
    }
    
  3. 对于纵向模式,请按以下方式使用:

    -(BOOL)shouldAutorotate {
        return YES;
    }
    -(NSUInteger)supportedInterfaceOrientations
    {
        return UIInterfaceOrientationMaskPortrait;
    } 
    
  4. 现在尝试锁定第一个视图控制器将以横向显示的方向,而不管方向锁定,其他视图将是纵向。