0

我遇到的问题有点奇怪,我似乎找不到任何好的解决方案。所以我有两个 UIViewControllers,一个可以取所有方向,另一个只能横向查看

internal override func shouldAutorotate() -> Bool {
    return true
}

internal override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
    return UIInterfaceOrientationMask.Lanscape
}

如果我在 ViewController1 上处于纵向模式,并且按下 VC2,它会旋转得很好,但是当我离开 VC2 时,即使设备本身处于纵向模式,VC1 也会卡在横向模式。我该如何解决?我尝试在 VC1 的 ViewDidAppear 方法中调用 AttemptToRotateToDeviceOrientation 方法,但它没有做任何事情

4

1 回答 1

0

您只需要在视图控制器中创建应用程序委托实例,例如:

let appDel = UIApplication.shared.delegate as! AppDelegate

在视图控制器的 Viewwillappear() 上,只需为景观添加此代码

appDel.myOrientation = .landscape
UIDevice.current.setValue(UIInterfaceOrientation.landscapeLeft.rawValue, forKey: "orientation")

对于肖像添加此代码

appDel.myOrientation = .portrait
UIDevice.current.setValue(UIInterfaceOrientation.portrait.rawValue, forKey: "orientation")
于 2020-02-11T09:29:32.880 回答