ios 使用Qt的原生Objective-C代码锁定方向

f45qwnt8  于 2022-12-24  发布在  iOS
关注(0)|答案(1)|浏览(148)

我希望能够改变方向只编程。写函数,旋转屏幕,因为我想要的。

UIInterfaceOrientation toIOSOrientation(ScreenOrientation desiredOrientaion) {
    if (desiredOrientaion == ScreenOrientation::Landscape || desiredOrientaion == ScreenOrientation::LandscapeReversed) {
        return UIInterfaceOrientation::UIInterfaceOrientationLandscapeLeft;
    } else if (desiredOrientaion == ScreenOrientation::Portrait) {
        return UIInterfaceOrientation::UIInterfaceOrientationPortrait;
    } else {
        return UIInterfaceOrientation::UIInterfaceOrientationPortrait;
    }
}

void iOSTools::changeOrientation(ScreenOrientation desiredOrientaion) {
    NSNumber* value = [NSNumber numberWithInt:toIOSOrientation(desiredOrientaion)];
    [[UIDevice currentDevice] setValue:value forKey:@"orientation"];
    [UIViewController attemptRotationToDeviceOrientation];
}

但是我必须打开应用程序清单中的两个方向:

<key>UISupportedInterfaceOrientations</key>
<array>
    <string>UIInterfaceOrientationPortrait</string>
    <string>UIInterfaceOrientationLandscapeLeft</string>
</array>

如果我这样做,用户可以使用这两个方向。如果我想禁止这一点,我必须重写this函数,但我应该如何在Qt中这样做?

9fkzdhlc

9fkzdhlc1#

-(UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{
            if (shouldRotate == YES){
               return UIInterfaceOrientationMaskAll;
            }else{
              return UIInterfaceOrientationMaskPortrait;
            }
       }

在应用代理中,您可以尝试添加此函数,将should rotate作为全局值,无论何时应用方向锁定,我们都可以将should rotate设置为false,它将处于纵向模式。如果您不应用方向锁定,我们可以将rotate设置为true,它可以在所有状态下旋转。

相关问题