gpt4 book ai didi

ios - 在导航栏中返回时,在 View 上锁定设备方向失败

转载 作者:可可西里 更新时间:2023-11-01 02:21:52 24 4
gpt4 key购买 nike

我有一个在 NavigationController 中嵌入了多个 VC 的应用。

我需要将所有 VC 锁定为纵向,并且只有一个 VC 可以同时锁定纵向和横向。

我尝试了不同的方法,这个对我有用:

extension UINavigationController {
public override func supportedInterfaceOrientations() -> Int {
return visibleViewController.supportedInterfaceOrientations()
}
public override func shouldAutorotate() -> Bool {
return visibleViewController.shouldAutorotate()
}

}

然后我像这样修改每个 ViewController:

class ViewController: UIViewController {
override func supportedInterfaceOrientations() -> Int {
return Int(UIInterfaceOrientationMask.Portrait.rawValue)
}

}

当我打开应用程序并从一个 VC 转到另一个 VC 时,一切都很好。应该只是肖像的 View 只是肖像。然后我打开未修改的 View ,它按预期更改了 interfaceOrientation。

但是 然后假设我在风景中留下最后一个未修改的 View ,然后在导航栏中按后退按钮并转到上一个 Controller (已修改为仅纵向)。 VC 的布局显示为 Landscape。

如果我一直按后退按钮,所有其他 VC 的行为就像他们从未被告知只能是肖像一样。

我用了这个帖子Korey Hinton, Lock Screen Rotation

最佳答案

我想我能够复制您描述的场景。不幸的是,我尝试强制更新的正常方法没有用,但我确实找到了 this SO answer这似乎有效。把它放在你在 viewDidAppear 中返回的 View Controller 中:

override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)

let value = UIInterfaceOrientation.Portrait.rawValue
UIDevice.currentDevice().setValue(value, forKey: "orientation")
}

这个修复似乎对我有用。不过,这是一个相当艰难的过渡。希望对您有所帮助

关于ios - 在导航栏中返回时,在 View 上锁定设备方向失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30486133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com