试图阻止iPhone 4上的方向更改

问题描述 投票:0回答:2

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

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

我能够防止直接旋转,即在视图控制器内部,如果用户将设备保持在纵向模式,他们在横向模式下没有任何反应。这正是我想要的。

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

我试着用

- (BOOL)shouldAutorotate;

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

我该如何防止这种行为?

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

我正在使用Xcode 9.4.1。

ios objective-c iphone-4 orientation-changes shouldautorotate
2个回答
1
投票

你可以使用方法supportedInterfaceOrientations

例如:

目标c

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

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;
    }
}

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

© www.soinside.com 2019 - 2024. All rights reserved.