gpt4 book ai didi

ios - 如何将 "force" View 在设备横向加载/显示时纵向显示?

转载 作者:行者123 更新时间:2023-11-29 12:08:47 24 4
gpt4 key购买 nike

我在我的 iOS 应用程序中支持所有方向和自动旋转,但我希望某些 View Controller 不要横向显示它们的 View 。我正在这样的 View Controller 中实现 shouldAutorotate 方法:

- (BOOL)shouldAutorotate
{
return NO;
}

并且它肯定会阻止 View 在加载时或以纵向显示时旋转为横向。但是当加载 View Controller 或者它看起来是设备已经横向时, View 以横向显示。

无论设备的方向如何,我如何从一开始就加载/使 View 显示为纵向?

谢谢

最佳答案

您可以使用方法 supportedInterfaceOrientations() 来指定特定 View Controller 可用的方向。

但是,当您将 View Controller 嵌入导航堆栈时,系统会调用导航 Controller 上的 shouldAutorotatesupportedInterfaceOrientations,并且从 View Controller 返回的值为忽略。

我使用 UINavigationController 的子类来从顶 View Controller 获取支持的方向。您还可以为 UITabBarViewController

创建这样一个类
class SingleOrientationNavigationController: UINavigationController {

//MARK : Orientation
override func shouldAutorotate() -> Bool {
if let topVC = topViewController {
return topVC.shouldAutorotate()
}
return false
}

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
if let topVC = topViewController {
return topVC.supportedInterfaceOrientations()
}
return UIInterfaceOrientationMask.Portrait
}

// MARK : Status bar
override func preferredStatusBarStyle() -> UIStatusBarStyle {
if let topVC = topViewController {
return topVC.preferredStatusBarStyle()
}
return .Default
}
}

请注意,如果推送的 View Controller 的旋转选项少于前一个,您可能会遇到一些问题。

让我们考虑两个 View Controller :

A : only portrait
B : all orientation

如果从 A 到 B 执行 push,那么就可以了,B 可以随心所欲地旋转,即使 B 是横向的,当它弹出时,你也会回到纵向的 A。

但是如果在 B 横向时从 B 向 A 执行推送,那么 A 也会显示为横向!一种解决方法是在这种特殊情况下使用模态视图 Controller 而不是推送它。

关于ios - 如何将 "force" View 在设备横向加载/显示时纵向显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34151617/

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