gpt4 book ai didi

iphone - iOS6 : do we have to set rootViewController in App delegate in order to support different orientations?

转载 作者:行者123 更新时间:2023-11-29 13:27:15 25 4
gpt4 key购买 nike

该应用程序在 iOS5 中横向运行时非常出色。然而在 iOS6 中,它开始在所有 View Controller 中使用纵向。不再调用 shouldAutorotateToInterfaceOrientation 方法。我读了new stuff about changed rotation mechanism in iOS6我可以通过在我的 AppDelegate 中添加一行来解决这个问题:

self.window.rootViewController = _viewController

_viewControler 是起始屏幕(主菜单)。所有其他 View Controller 都实现了 shouldAutorotateToInterfaceOrientation 方法并仅对横向返回 YES。因此,对于只需要支持一个方向的应用程序来说,它是完美的工作解决方案。

但是,问题是我需要一个 View Controller (我们称之为 phone-VC)以纵向显示。现在,如果我想旋转这个 View Controller ,那么我需要在分配给 appDelegate 中的 rootViewControler 的主菜单 Controller 中返回 YES。但是,我不能那样做,因为这个 rootViewController 是启动窗口,只需要横向显示,否则这个窗口中的图形布局将会中断。但是,如果我不从它的 shouldAutorotateToInterfaceOrientation(主菜单)返回 YES,那么在我的 View phone-VC 中不会调用相同的方法,需要以纵向显示。

有什么想法吗? AppDelegate 中 rootViewController 的赋值是强制的吗?

更新:问题存在于设备上(至少在 iPhone4 上)。

最佳答案

是的,从 iOS 6.0 开始,您必须将 rootviewcontroller 分配给 Windows.rootViewController。这个 Controller 将决定他们的 child 是否旋转。默认情况下支持所有方向,但您可以通过实现 shouldAutoRotate 和 supportedInterfaceOrientations 委托(delegate)方法来限制它们。我有一个实例,在使用 MGSplitViewController 时我没有将 rootviewcontroller 分配给 Windows这是将 viewcontroller 作为 subview 添加到窗口。我只需要更改它以创建 rootviewcontroller 并且一切正常!

检查 UIKit Apple 文档部分 - iOS 6.0 发行说明。

关于iphone - iOS6 : do we have to set rootViewController in App delegate in order to support different orientations?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12815953/

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