ios 5与ios 6问题的自动旋转

时间:2012-12-20 16:40:46

标签: objective-c ios ipad uiinterfaceorientation uideviceorientation

我有一个必须支持iOS 5.0及更高版本的iPad应用程序。我有一个在5.0 / 5.1中表现不同于6.0的错误。问题是tabbarcontroller中的视图控制器推送模态视图,而模式视图又通过navigationController推送全屏视图。问题是,在全屏视图中,如果iPad被旋转,底层视图控制器(tabbarcontroller中的一个)不会旋转。现在让我分解iOS版本中的差异:

首先,这个viewController实现了shouldAutoRotateToInterfaceOrientation(返回YES)以及willRotateToInterfaceOrientation和willAnimateRotationToInterfaceOrientation。

在iOS 6.0中,我注意到旋转方法(willRotate ...& willAnimate ...)没有被调用,所以我注册它以接收UIDeviceOrientationDidChangeNotification通知并执行两个Rotate方法中的代码如果我收到该通知,其他方法未执行。这解决了iOS 6.0中的问题。

问题是,在5.0 / 5.1中,旋转方法(willRotate ...& willAnimate ...)正在执行,但视图没有旋转。如果“全屏视图”未显示在此视图控制器的顶部并且iPad已旋转,则执行这两种方法并相应地旋转视图。

请帮忙。提前谢谢。

我尝试过的事情不同于上述情况。

我已经尝试检查UIDeviceOrientation并将其转换为UIInterfaceOrientation并调用[self shouldAutorotateToInterfaceOrientation:xxx];视图仍然显示错误。

1 个答案:

答案 0 :(得分:0)

执行两个旋转方法时,请为视图执行CAAffineTransformation。当你恢复正常时,再用-90度做同样的事。

https://developer.apple.com/library/ios/#documentation/GraphicsImaging/Reference/CGAffineTransform/Reference/reference.html