在iOS7中,很少但偶尔,当我在显示
UIAlertView
时旋转我的应用程序时,只有alertView和状态栏旋转,而不是我的应用程序。有其他人经历过这种情况和/或找到解决方法吗?
我通过向应用程序委托添加下一个方法解决了这个问题:
- (void)application:(UIApplication *)application willChangeStatusBarOrientation:(UIInterfaceOrientation)newStatusBarOrientation duration:(NSTimeInterval)duration {
NSArray *windows = [application windows];
for (UIWindow *nextWindow in windows) {
[[nextWindow.rootViewController class] attemptRotationToDeviceOrientation];
}
}
我遇到了相反的问题。我的应用程序会旋转,但警报视图不会旋转。我发现这是因为我在
UIActionSheet
被消除后立即显示警报视图(所以当它的消除动画发生时)。这似乎触发了一个错误,该错误将使警报视图不随应用程序旋转(以及稍后的一些其他小视觉问题)。我通过在操作表开始消失后半秒显示警报视图来解决这个问题,如下所示:
[alertView performSelector:@selector(show) withObject:nil afterDelay:0.5];
我认为iOS7中问题的根源是苹果改变了UIAlertView的外观机制。 从现在开始,在启动两个私有视图控制器后,所有的alertView都会随之显示
_UIModalItemAppViewController
_UIModalItemsPresentingViewController
换句话说,现在 UIAlertView 不是一个纯粹的视图 - 它是具有完整视图控制器生命周期的一些复杂视图控制器集合的一部分。