如何停止设备方向更改
我正在开发一个应用程序,该应用程序在启动时处于纵向模式。之后,我为我的项目添加了一些SDK。在集成SDK的过程中,需要在“常规”窗格中选中“纵向”和“横向”权限。所以我将其设置为在SDK集成手册中给出的。如何停止设备方向更改
后,当我跑我的设备项目,将其旋转到右边的应用设备的方向正在发生变化。我怎样才能设置方向是固定的,而不会干扰SDK。
如果您遇到问题设置方位的应用程序启动之后,那么你可能需要停止向每个视图控制器或它的一个基地导航控制器
斯威夫特3:
class YourBaseNavigationController: UINavigationController {
override func viewDidLoad() {
super.viewDidLoad()
UIDevice.current.setValue(UIInterfaceOrientation.portrait.rawValue, forKey: "orientation")
}
override var shouldAutorotate: Bool {
return false
}
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return .portrait
}
override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {
return .portrait
}}
使用YourBaseNavigationController作为您的导航控制器。基本上,此导航控制器中的所有视图控制器都将强制仅支持纵向模式。
我会试试这个解决方案。 – Ramakrishna
如果我以编程方式将我的根视图控制器设置为导航控制器,该怎么办? 'nav = UINavigationController(rootViewController:SyncVc)' – Ramakrishna
因此,不要在这里使用UINavigationController,而应该使用YourBaseNavigationController。 'YourBaseNavigationController(rootViewController:SyncVc)' – RMRAHUL
您需要通过代码禁用方向。
在RootViewController的添加以下代码:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);//set 'return NO'; for stop orientation
}
斯威夫特:
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return UIInterfaceOrientationMask.Portrait
}
好的。我会尝试。 – Ramakrishna
可以清除问题正是你想要什么如果你设置的风景正确,然后定位 - 当然它会改变。 –
我想我的应用程序将只支持肖像模式。我知道,如果我给风景权,它会改变方向。如果我删除风景权,我的sdk无法正常工作,并且像'支持的方向与应用程序没有共同的方向,并且应该手动标记返回YES'一样出现一些错误。 – Ramakrishna
看看这个答案:http://stackoverflow.com/a/43359827/7715250 –