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



我希望能够仅以编程方式改变方向。编写了一个函数,可以根据需要旋转屏幕。

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>

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

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

在app delegate中,你可以尝试添加这个函数将shoultrotate设为全局值当你应用方向锁定时,我们可以将shoultrotate设为false,它将处于竖屏模式。如果你不应用方向锁定,我们可以将rotate设为true,那么它可以在所有状态下旋转。

相关内容

  • 没有找到相关文章

最新更新