当屏幕处于横向模式时,UIAlertview以纵向模式显示

时间:2014-11-19 06:10:28

标签: ios8 orientation alertview

我的应用程序配置为仅支持纵向模式。但是我必须在横向模式下在我的应用程序中显示一个屏幕(例如abcViewController)。按下abcViewController屏幕时,方向从纵向模式更改为横向模式。在该abcViewController屏幕statusBar中,所有图像,按钮都以横向模式显示,但UIAlertView显示在PortraitMode中。    这意味着视图中的所有内容都会更改为abcViewController中的横向模式,但UIAlertView不会旋转到横向模式并保持纵向模式。 我希望UIAlertView遵循包含视图控制器的规则并显示与statusBar相同的方向。

enter image description here

注意:我使用Xcode 5.0在iOS 8.0上运行我的应用程序,我正在寻找支持Xcode 5.0的解决方案

1 个答案:

答案 0 :(得分:3)

实际上,我以编程方式为iOS 7和更早的iOS版本轮换了UIView和此类的状态栏,但我在iOS 8中遇到了这个方向问题,然后我读了iOS 8的新变化与方向有关,如下所示:

我在iOS 7和iOS 8中都运行了以下代码:

UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
BOOL landscape = (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight);
NSLog(@"Currently landscape: %@, width: %.2f, height: %.2f", 
      (landscape ? @"Yes" : @"No"), 
      [[UIScreen mainScreen] bounds].size.width, 
      [[UIScreen mainScreen] bounds].size.height);

以下是iOS 8的结果:

Currently landscape: No, width: 320.00, height: 568.00
Currently landscape: Yes, width: 568.00, height: 320.00

与iOS 7中的结果相比:

Currently landscape: No, width: 320.00, height: 568.00
Currently landscape: Yes, width: 320.00, height: 568.00

所以,我知道[UIScreen mainScreen] .bounds.size在iOS8中变为取向依赖。

在阅读iOS 8的这一新变化后,我为iOS 8创建了一个新类,因此您有两个解决此问题的方法。

解决方案1:您应该使用UIAlertController代替UIAlertView

解决方案2:您可以为iOS 8创建一个面向此方向问题的新类。