我在当前UIViewController
(现在称为控制器B)上展示了一个UIViewController
(我们称为控制器A)。我希望控制器A出现在横向方向上。设置overCurrentContext
时,默认情况下不会更改方向(我需要向左/向右转动设备),但是,如果我注释overCurrentContext
代码,则一切正常。
var landscapeOrientation = false
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
if landscapeOrientation{
return UIInterfaceOrientationMask.landscapeRight
}else{
return UIInterfaceOrientationMask.portrait
}
}
我如何展示新控制器并设置方向。
let delegate = UIApplication.shared.delegate as! AppDelegate
delegate.landscapeOrientation = true
let controller = ToolTipWithCheckImageViewController()
controller.view.backgroundColor = .clear
controller.modalPresentationStyle = .overCurrentContext //Which causes the bug
controller.modalTransitionStyle = .crossDissolve
topController.present(controller, animated:true)
PS:我也在其他一些控制器上也使用了此delegate.landspaceOrientation=true
,因为我没有将它与overCurrentContext一起提供,所以一切正常,因此该代码没有问题:)
P.S2 :父控制器是UINavigationController
我认为这个问题对我有些问题,但是我不知道所提供的解决方案。 Can a viewcontroller presented modally over current context (UIModalPresentationStyleOverCurrentContext) be rotated with device?
答案 0 :(得分:0)
我在一种叠加视图控制器中具有相同的效果-如果您无论如何至少需要全屏“大小”的背景视图,都可以将.overFullScreen用作modalPresentationStyle而不是.overCurrentContext(它仍会显示通过某种快照作为背景,但旋转仍然有效。