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

Posted

技术标签:

【中文标题】当屏幕处于横向模式时,UIAlertview 以纵向模式显示【英文标题】:UIAlertview is showing in portrait mode when screen is in landscape mode 【发布时间】:2014-11-19 06:10:27 【问题描述】:

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

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

【问题讨论】:

您好 ajeet.cody,您对此有什么解决方案吗?如果是,请在我的邮件 ID 上回复我:shripad.chidrawar20@gmail.com。寻求正面答复。提前致谢。 @shripad20 我已经发布了答案。我希望这能帮到您。如果您有任何疑问,请告诉我。谢谢 【参考方案1】:

实际上,我为 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 创建一个新类。

【讨论】:

感谢您发回解决方案。 +1。 感谢@ajeet 的解决方案。我强行旋转视图,但后来我更改了视图旋转的实现,它解决了我的问题。

以上是关于当屏幕处于横向模式时,UIAlertview 以纵向模式显示的主要内容,如果未能解决你的问题,请参考以下文章

应用程序第一次处于纵向模式,如果设备处于横向模式

iPad应用程序首先进入纵向模式,然后在解锁屏幕后进入横向模式,在锁定时处于横向模式

仅在 iOS8 中,当 App 被锁定为纵向时,UIAlertView 更改为横向

我只想要一个屏幕处于纵向模式,而所有其他屏幕都处于横向和纵向模式 ios 9 应用程序

Xcode 说 UIView 在纵向时处于横向模式

当设备处于横向时,Phonegap iOS 应用程序以纵向加载