4

我有一个必须支持 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]; 视图仍然显示错误。

4

1 回答 1

0

当执行这两种旋转方法时,为您的视图执行 CAAffineTransformation。当您恢复正常时,再次对 -90 度执行相同操作。

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

于 2012-12-24T07:14:33.727 回答