我试图找到一个解决方案,但是有太多的信息是行不通的。我的最后一次尝试是使用以下内容:
UIApplication.sharedApplication().setStatusBarOrientation(UIInterfaceOrientation.LandscapeRight, animated: false)
然而,这已经从iOS 9中弃用,并且无法找到任何强制旋转UINavigationController
的方法。我的应用程序主要使用纵向方向,只有一个视图需要是Landscape。我需要在一个视图上强制使用Landscape并休息以保持为Portrait。任何帮助将非常感谢!
我检查过的一些问题是:
Setting device orientation in Swift iOS
How do I programmatically set device orientation in iOS7?
Why can't I force landscape orientation when use UINavigationController?
答案 0 :(得分:3)
如果这是您真正想做的事情,请将子类UINavigationController
添加到此代码中:
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return .Landscape
}
试图强制定位是不明智的;最好告诉iOS你想要什么(如上所述),然后让它尽可能地计算方向。
答案 1 :(得分:0)
我们也必须在我们的应用程序中执行相同的操作。最初我们与黑客合作。但最终我们改变了#34; Landscape" VC到模态而不是导航视图控制器堆栈的一部分。我建议你那样做。但如果你真的想要,你就是这样做的。
子类导航VC。
在supportedInterfaceOrientaions
检查VC类型&返回适当的方向(你想要的景观,休息的肖像)
这本身不会将VC自动旋转到横向,所以这就是黑客。
在viewDidLoad/viewDidAppear
" landscape" VC,推送另一个通用VC对象&随后弹出
UIViewController *c = [[UIViewController alloc]init];
[self presentViewController:c animated:NO completion:nil];
[self dismissViewControllerAnimated:NO completion:nil];
这曾经适用于iOS7&之后我们切换到模态。所以现在可能会在以后的版本中使用。