iOS7 - 未调用AutoRotate

时间:2014-02-27 17:46:58

标签: iphone ios7

我正在开发一个支持项目,我对iPhone有基本的了解。当我在设备中更改方向时,在方向更改时不会调用以下方法。

- (BOOL)shouldAutorotate {

    UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];

    if (orientation == UIInterfaceOrientationPortrait) {
        // your code for portrait mode

    }

    return YES;
}

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskPortrait;
    //return here which orientation you are going to support

}

我正在通过presentViewController推送屏幕,并且在推动屏幕之前调用上面的方法,但是在推动屏幕和更改方向后没有任何内容。

另外,我尝试创建一个类别,如下所述,但我发现viewController找不到错误,不知道我在这里缺少什么......

在IOS7中。如果你使用UINavigationController,旋转处理方式是不同的!

看看UINavigationController,可以看到它是UIViewController的子类,那就是在他上面列出了上面处理方法的轮换;所以我需要使用UINavigationController也做旋转处理,

我的方法是将类别添加到UINavigationController,这样做。

在类别中。 M写道

-(BOOL)shouldAutorotate {    
  return [[self.viewControllers lastObject] shouldAutorotate];
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {    
  return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation]; 
}

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

对我来说,其他两个功能也有效,但你可以尝试使用下面的代表

来自Apple Docs:

  

在用户界面开始之前发送到视图控制器   旋转。

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
     

持续的时间:(NSTimeInterval)持续时间

     

用户界面旋转后发送到视图控制器:

 -(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation