我的应用程序配置为仅支持纵向模式。但是我必须在横向模式下在我的应用程序中显示一个屏幕(例如abcViewController)。按下abcViewController屏幕时,方向从纵向模式更改为横向模式。在该abcViewController屏幕statusBar中,所有图像,按钮都以横向模式显示,但UIAlertView显示在PortraitMode中。 这意味着视图中的所有内容都会更改为abcViewController中的横向模式,但UIAlertView不会旋转到横向模式并保持纵向模式。 我希望UIAlertView遵循包含视图控制器的规则并显示与statusBar相同的方向。
注意:我使用Xcode 5.0在iOS 8.0上运行我的应用程序,我正在寻找支持Xcode 5.0的解决方案
答案 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创建一个面向此方向问题的新类。