0

我在 iOS 应用程序中遇到了旋转(方向更改)问题。该应用程序有几个视图控制器可供导航。

我希望它可以旋转,除了 iPhone 4(3.5 英寸设备)。在 3.5 英寸设备上,它应该始终保持纵向模式。

我能够防止直接旋转,即在视图控制器内部时,如果用户将设备保持在纵向模式并且它们处于横向模式,则不会发生任何事情。这正是我想要的。

在横向模式下更改视图控制器时会出现问题。在这种情况下,新的视图控制器以横向模式显示,我不希望这样。

我试着用

- (BOOL)shouldAutorotate;

当设备为 3.5 英寸时返回 NO,但这不起作用。

如何防止这种行为?

我可能需要添加一个细节:我用来测试的 3.5 英寸设备运行 iOS 版本 9.3.5。

我正在使用 Xcode 9.4.1。

4

2 回答 2

1

您可以使用方法supportedInterfaceOrientations

例如:

目标c

-(UIInterfaceOrientationMask)supportedInterfaceOrientations
{
    //return your preferred orientation 
    return UIInterfaceOrientationMaskPortrait;
}
于 2018-09-04T10:03:09.260 回答
0

您需要在AppDelegate.m中添加此代码。iPhone 4/ iPhone 4s 的屏幕高度为 480 点。

Objective-C

- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(nullable UIWindow *)window
{
    if(self.window.bounds.size.height > 500) {
        return (UIInterfaceOrientationMaskLandscape | UIInterfaceOrientationMaskPortrait);
    } else {
        return UIInterfaceOrientationMaskPortrait;
    }
}

您可能还需要Require Full Screen在 Target 的Deployment Info.

于 2018-09-04T10:48:37.740 回答