Iphone iOS6中的自转

Iphone iOS6中的自转,iphone,ios,ios6,xcode4.5,Iphone,Ios,Ios6,Xcode4.5,我正在为iOS 6更新我的应用程序,对自动旋转的更改有问题。我的应用程序有一堆视图控制器,它们都应该只支持纵向布局,除了1个应该支持所有3个方向,除了倒置 如果我将应用程序:SupportedInterfaceDirectionsforWindow:方法添加到应用程序委托中,我是否需要在那里添加条件以检查我是否显示了我希望能够旋转的VC 文档中指出,如果我在VC上实现supportedInterfaceOrientations,它应该覆盖app delegate方法,但情况似乎并非如此。我在子V

我正在为iOS 6更新我的应用程序,对自动旋转的更改有问题。我的应用程序有一堆视图控制器,它们都应该只支持纵向布局,除了1个应该支持所有3个方向,除了倒置

如果我将
应用程序:SupportedInterfaceDirectionsforWindow:
方法添加到应用程序委托中,我是否需要在那里添加条件以检查我是否显示了我希望能够旋转的VC

文档中指出,如果我在VC上实现
supportedInterfaceOrientations
,它应该覆盖app delegate方法,但情况似乎并非如此。我在子VC的方法中有一个log语句,当VC加载时会调用它一次,但当我旋转设备时不会调用它,但应用程序委托中的方法是

如果我从应用程序委托中完全删除该方法,我的VC的方向似乎完全取决于我的应用程序支持的界面方向设置。当然,这似乎是由于在创建VC时只调用了一次方法
supportedInterfaceOrientations
,但在设备旋转时从未调用过


有人有什么想法或建议吗?非常感谢。

您还需要覆盖-(BOOL)shouldAutorotate并返回“YES”。这使得您可以使用“supportedInterfaceOrientations”声明VC支持的方向,然后在旋转时它应该调用“shouldAutorotate”。如果您有任何导航控制器或选项卡栏,您可能需要对它们进行子类化,以便在其中执行相同的操作。我最近也遇到过这个问题。

替换
[窗口添加子视图:viewController.view]
具有
window.rootViewController=viewController

试试这个

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration
{

    if (UIInterfaceOrientationIsLandscape(interfaceOrientation))  
    { 
        // here to  implement landscope code
    }
    else
    {  
        // here to  implement setframePortrait
    }
}

我忘了提到,我确实实现了这个方法,但它从未在我的视图控制器上调用过。我所有的视图控制器都由几个导航控制器管理,除了支持自定义旋转之外,我真的需要为导航控制器子类化吗?如果是这样的话,苹果真的把以前的工作复杂化了……我和你有同样的问题,基本上,如果父母(你的导航控制器)自己不支持自动旋转,他们不会和他们的孩子(你的VC)商量。也许现在或将来会有更好的方法,但这样做并不难。我对导航控制器进行了子类化,并在其中添加了“shouldAutorotate”,只是始终返回yes。子VC仍然没有调用旋转方法。还有一个方法“shouldAutomaticallyForwardRotationMethods”,我在导航控制器上尝试了这个方法,结果返回yes。它在旋转期间被调用,但似乎不会影响子VC。我不知所措……好吧,别放弃。我也在挣扎,我错过了其中的一个。如果我是你的话,我会做一个快速的改变,让一个基本案例只与一个VC一起工作,然后添加导航控制器并处理它。shouldAutorotateToInterfaceOrientation不受欢迎,但是“-(BOOL)shouldAutorotate NS_AVAILABLE_IOS(6_0);”是你在IOS6上使用的东西。这几乎是我的同一个问题,我真不敢相信苹果把自动旋转搞得这么糟!你解决了这个问题吗?如果你能发表你的笔记,那将是一个很好的参考!我最终做了一些类似于@rooster117所建议的事情。在我的AppDelegate中,我覆盖了方法
应用程序:SupportedInterfaceOrientionsforWindow:
,并返回了
[[(UINavigationController*)window.rootViewController visibleViewController]SupportedInterfaceOrientions]
。这迫使俯视图控制器提供方向信息。然后在我的每个视图控制器中实现了
supportedInterfaceOrientations
。与我的选项卡控制器配合得很好,谢谢。