objective-c - iOS 5 与 iOS 6 中的自动旋转问题

标签 objective-c ios ipad uiinterfaceorientation uideviceorientation

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

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

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

问题是,在 5.0/5.1 中,旋转方法 (willRotate... & willAnimate...) 正在执行,但 View 没有旋转。如果“全屏 View ”没有出现在这个 View Controller 的顶部并且 iPad 被旋转,这两个方法会执行并且 View 会相应地旋转。

请帮忙。提前致谢。

除上述之外,我还尝试过其他方法。

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

最佳答案

当两种旋转方法正在执行时,为您的 View 执行 CAAffineTransformation。当你恢复正常时,再次以 -90 度做同样的事情。

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

关于objective-c - iOS 5 与 iOS 6 中的自动旋转问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13976664/

相关文章:

ios - 无法更改 Swift iOS 自定义单元格属性(展开空可选)

javascript - react native : How do I style NavigationExperimental's NavigationCardStack and NavigationHeader?

ios - 使用 GPUImage 归档 ios 应用程序时编译错误

ios - 从 UISplitView 呈现全屏模态视图?

iphone - Objective C 定义 UIColor 常量

iphone - 方法如何判断哪个 View Controller 调用了它

iphone - 以编程方式添加 tablview 的滚动禁用

iphone - 用于接近检测 iOS 的蓝牙 LE RSSI

ios - AFNetworking - 可以让文件排队等待上传的异步上传任务(有进度)

javascript - 在 iOS 中加载时防止键盘掉落