【发布时间】:2014-11-13 18:34:51
【问题描述】:
我正在将 iOS 6 应用程序更新到 iOS 8 (iPad),并且我创建的任何新 UIWindows 始终以纵向模式显示。该应用最初支持纵向和横向方向,但现在仅支持横向。
我已将项目文件中支持的方向更改为横向左和横向右。正如预期的那样,整个 UI 以横向显示,但是当我创建一个新的 UIWindow 时,它以纵向显示。新的UIWindow 的框架与屏幕的框架完全匹配,所以我无法想象它为什么/如何以纵向模式显示。
以下代码是我用来创建和显示新的UIWindow,它充当模态:
var modalWindow:UIWindow = UIWindow(frame: self.view.window!.bounds)
modalWindow.backgroundColor = UIColor.blackColor().colorWithAlphaComponent(0.66)
modalWindow.hidden = false
modalWindow.windowLevel = (UIWindowLevelStatusBar + 1)
modalWindow.addSubview(customView)
modalWindow.makeKeyAndVisible()
我已经为此苦苦挣扎了几个小时; UIWindow 不应该默认处于横向模式,因为该应用只支持横向方向吗?
对于如何解决此问题的任何建议,我将不胜感激。
编辑:
我刚刚创建了一个仅支持横向左和横向右的新测试应用程序,问题也出现在那里。这是一个错误吗?我似乎无法理解为什么 UIWindow 在处于横向模式时会认为应用处于纵向模式。
【问题讨论】:
-
您是仅支持 iOS 8+ 还是支持 iOS 7?如果是,你能在那个模拟器上测试它吗?我怀疑它会起作用,我知道为什么。
-
部署目标是iOS 8.0,但我的计划是支持iOS 7+和iOS 8+。我刚刚尝试将部署目标更改为 iOS 7.0,而
UIWindow仍处于纵向模式。这就是你所说的“那个模拟器”吗? -
也许退后一步,您为什么使用 UIWindows 进行模态演示?在 iOS 7 中,为自定义模式呈现提供了出色的新 API。我建议先检查一下:developer.apple.com/library/IOs/documentation/UIKit/Reference/…
-
我正在使用 UIWindows,因为我正在使用自定义视图而不是单独的视图控制器。我还想将自定义视图放置在屏幕上的任何位置。
-
不,这不是我所说的那个模拟器的意思。您需要从 Xcode Settings -> Downloads 下载 iOS 7.1 模拟器。无论如何,问题是在 iOS 8 中,UIScreen 和主窗口返回基于方向的边界和框架。以前,您总是会以纵向方式获取/设置方向,现在这取决于您的方向。我相信这是问题所在。
标签: ios swift screen screen-orientation