gpt4 book ai didi

ios - 如何以编程方式在 iOS 7 中设置设备方向?

转载 作者:IT王子 更新时间:2023-10-29 07:32:04 27 4
gpt4 key购买 nike

我正在使用 AutoLayout 开发 iPad 应用程序,如果用户启用某种模式(“抬头”模式),我只想支持纵向(或纵向颠倒)方向,此外,如果设备处于横向模式,我想自动切换到纵向模式。

在顶 View Controller 中,我有以下内容:

- (NSUInteger) supportedInterfaceOrientations {
if (self.modeHeadsUp) {
return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;
} else {
return UIInterfaceOrientationMaskAll;
}
}

- (BOOL) shouldAutorotate {
return TRUE;
}

根据我在其他地方看到的答案,答案似乎是我应该使用“application setStatusBarOrientation”。因此,在用户选择“单挑”模式的方法中,我包括:

    UIApplication *application = [UIApplication sharedApplication];
[application setStatusBarOrientation:UIInterfaceOrientationPortrait
animated:YES];

然而,这似乎并没有做任何事情。虽然我可以物理移动设备以使其旋转为纵向,但它不会自动执行此操作。

事实上,在运行上述代码以尝试以编程方式设置方向后处于横向模式时,当我使用以下代码查询应用程序“statusBarOrientation”时,横向仍保持为“4”:

UIApplication *application = [UIApplication sharedApplication];
int orientation = [application statusBarOrientation];
self.movesTextView.text = [NSString stringWithFormat:@"ORIENTATION %d", orientation];

似乎 autolayout 没有被 setStatusBarOrientation 触发,所以我试图在之后添加这段代码,但没有效果:

    [super updateViewConstraints];
[self.view updateConstraints];

我意识到 Apple 希望将设备方向留在用户手中。但是,我希望能够在不处于“单挑”模式时支持横向模式。

我是否遗漏了一些能够强制改变方向的东西?

最佳答案

对于 iOS 7 和 8:

objective-C :

NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeLeft];
[[UIDevice currentDevice] setValue:value forKey:@"orientation"];

swift 3+:

let value = UIInterfaceOrientation.landscapeLeft.rawValue
UIDevice.current.setValue(value, forKey: "orientation")

我在 -viewDidAppear: 中调用它。

关于ios - 如何以编程方式在 iOS 7 中设置设备方向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20987249/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com