试图防止 iPhone 4 上的方向改变

Trying to prevent orientation change on an iPhone 4

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

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

我能够防止直接旋转,即在视图控制器内时,如果用户以纵向模式握住设备而在横向模式下则什么也不会发生。这正是我想要的。

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

我尝试使用

- (BOOL)shouldAutorotate;

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

如何防止这种行为?

我可能需要补充一个细节: 我用来测试运行 iOS 版本 9.3.5.

的 3.5 英寸设备

我正在使用 Xcode 9.4.1.

您可以使用方法supportedInterfaceOrientations

例如:

Objective c

-(UIInterfaceOrientationMask)supportedInterfaceOrientations
{
    //return your preferred orientation 
    return UIInterfaceOrientationMaskPortrait;
}

您需要在 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;
    }
}

您可能还需要在 Target 的 Deployment Info 中启用 Require Full Screen