iOS6中的自动旋转

时间:2012-09-20 17:55:36

标签: iphone ios ios6 xcode4.5

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

如果我将application:supportedInterfaceOrientationsForWindow:方法添加到app委托,我是否必须在那里添加条件以检查我是否显示了我希望能够旋转的VC?

文档指出,如果我在VC上实现supportedInterfaceOrientations,它应该覆盖应用委托方法,但事实并非如此。我在子VC上的方法中有一个日志语句,它在VC加载时被调用一次但在我旋转设备时没有被调用,但是app委托中的方法是。

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

有没有人有任何想法或建议?非常感谢。

3 个答案:

答案 0 :(得分:13)

替换 [window addSubview:viewController.view];window.rootViewController = viewController;

答案 1 :(得分:3)

您还需要覆盖 - (BOOL)shouldAutorotate并返回“YES”。这使得您可以使用“supportedInterfaceOrientations”声明VC支持的方向,然后在轮换时应调用“shouldAutorotate”。如果您有任何导航控制器或tabbar,您可能需要将它们子类化以在其中执行相同的操作。我最近自己有这个问题。

答案 2 :(得分:0)

试试这个......

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

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