2

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

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

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

这是我的应用程序的纵向模式

人像模式

这些都是我在我的视图控制器和应用程序 Plist 中所做的一切,我添加了像这样的所需方向 Info.plist

列表信息

并且应用设备方向会自动改变。像这样—— 设备方向

我很确定一切都很清楚,应该可以按预期工作,但是由于某种原因,当我使用该应用程序并锁定自动旋转并运行该应用程序时,它会自动以纵向模式打开,而当我解锁自动旋转时,它将处于横向模式并且您旋转它将旋转到纵向模式。我使用 shouldAutorate 返回 YES 因为它应该在横向左侧和横向右侧之间自动旋转它所以我也使用它纵向模式屏幕以纵向打开但当用户旋转设备时它会自动旋转。

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

4

1 回答 1

0

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

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

  2. 保持下面的代码,你有横向方向:

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

    -(BOOL)shouldAutorotate {
        return YES;
    }
    -(NSUInteger)supportedInterfaceOrientations
    {
        return UIInterfaceOrientationMaskPortrait;
    } 
    

现在尝试锁定方向,您的第一个视图控制器将出现在横向,而另一个视图控制器将是纵向,无论方向锁定如何。

于 2018-03-06T04:28:33.533 回答