gpt4 book ai didi

swift - 改变方向时无法让 shouldautorotate 触发

转载 作者:行者123 更新时间:2023-11-30 11:21:52 27 4
gpt4 key购买 nike

我正在使用 Swift4 使用 Xcode9 开发一个应用程序,它最初仅适用于 iPad,但现在也需要在手机上运行。我需要将手机锁定为纵向,而 iPad 保持纵向/横向。

在使用 shouldautorotate 函数并根据设备返回 true 或 false 之前,我已经完成了此操作,如下所示。

override func shouldAutorotate() -> Bool {
return false
}

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

但是,当我改变方向时它不会触发。这是另一种已弃用的方法吗?如果是,我现在如何限制方向?

最佳答案

如果您的 View Controller 嵌入到 UINavigationControllerUITabBarController 中,则从它们中查询此 shouldAutorotate() 因为此容器是最顶层的 View Controller 。 iOS 更新后,它不会要求包含 View Controller 是否需要旋转。因此,您可以使用自定义子类并在运行时创建它或在 Storyboard 中作为自定义类提供:

import UIKit
class CustomNavigationController: UINavigationController {
override var shouldAutorotate: Bool {
return self.viewControllers.last?.shouldAutorotate ?? true
}
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return self.viewControllers.last?.supportedInterfaceOrientations ?? .all
}
}

关于swift - 改变方向时无法让 shouldautorotate 触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51171880/

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