重现非常容易的问题。创建一个新的Master / Detail Application iOS项目,并将AppDelegate更改为:
import UIKit
class WindowSubclass: UIWindow { }
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDelegate {
// var window: UIWindow?
var window: WindowSubclass? = { WindowSubclass(frame: UIScreen.mainScreen().bounds) }()
在iPad模拟器/设备上运行并开始旋转。如果在启动应用程序时设备处于纵向模式,它将正常旋转。如果应用程序以横向模式启动,它将很快搞砸。
我怀疑我的问题出在window
属性的getter中,但我不确定如何解决它。我使用的这条线似乎是这样做的规范方式。
根据对类似问题的回答,我确保窗口rootViewController
设置为UISplitViewController
,拆分视图控制器的shouldAutorotate()
返回{ {1}},所以不应该成为问题。
答案 0 :(得分:0)
在这里'也许'溶液
似乎在访问window
属性并且WindowSubclass
实例化时,屏幕并不真正知道它的定位。
如果您在window!.frame = UIScreen.mainScreen().bounds
中添加application(didFinishLaunchingWithOptions:)
,则会自行排序。
答案 1 :(得分:0)
我认为发生这种情况的原因是因为启动应用的UIViewController
。在所有其他UIViewControllers
上,我的子类UIWindow
在我将rootViewController
设置为其显示的UIViewController
时旋转正常。我不确定这是出于某种原因的预期行为还是iOS中的错误。