视图控制器方向没有按预期工作,我错过了啥?
Posted
技术标签:
【中文标题】视图控制器方向没有按预期工作,我错过了啥?【英文标题】:View Controller orientation is not working as expect, What am I missing?视图控制器方向没有按预期工作,我错过了什么? 【发布时间】:2021-12-08 03:18:53 【问题描述】:我的应用是横向模式,除了一个 VC。 TopVC 是横向的,但在加载 MyVC 时,它应该根据设备方向旋转。如果模式纵向(横向模式很好),加载 MyVC 按预期工作但返回 TopVC 显示不正确。 这是我尝试过的代码 在 AppDelegate.swift
var orientationLock = UIInterfaceOrientationMask.landscape
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask
return self.orientationLock
func lockOrientation(_ orientation: UIInterfaceOrientationMask)
self.orientationLock = orientation
在 MyVC.swift
override func viewWillAppear(_ animated: Bool)
// change orientation
if let delegate = UIApplication.shared.delegate as? AppDelegate
delegate.lockOrientation(.allButUpsideDown)
override func viewWillDisappear(_ animated: Bool)
if let delegate = UIApplication.shared.delegate as? AppDelegate
delegate.lockOrientation(.landscapeLeft)
有人可以帮我解决这个问题吗? 如果从 MyVC 返回纵向模式,问题是返回 TopVC 以纵向模式显示。
【问题讨论】:
看看这个***.com/questions/27037839/… @ShreeramBhat 感谢您的支持,我已经尝试过一个及以下的答案。 ***.com/a/58424565/1835679 【参考方案1】:如果有人需要答案,试试这个。为我工作。
override func viewWillDisappear(_ animated: Bool)
if let delegate = UIApplication.shared.delegate as? AppDelegate
delegate.lockOrientation(.landscape)
if !UIWindow.isLandscape
UIDevice.current.setValue(Int(UIInterfaceOrientation.landscapeLeft.rawValue), forKey: "orientation")
【讨论】:
以上是关于视图控制器方向没有按预期工作,我错过了啥?的主要内容,如果未能解决你的问题,请参考以下文章
UINavigationController - 应用程序试图在目标上推送一个 nil 视图控制器,我错过了啥?