带有UISplitViewController的UIWindow子类不会旋转

时间:2015-01-23 00:25:50

标签: ios

重现非常容易的问题。创建一个新的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模拟器/设备上运行并开始旋转。如果在启动应用程序时设备处于纵向模式,它将正常旋转。如果应用程序以横向模式启动,它将很快搞砸。

iPad simulator showing improperly rotated view

我怀疑我的问题出在window属性的getter中,但我不确定如何解决它。我使用的这条线似乎是这样做的规范方式。

根据对类似问题的回答,我确保窗口rootViewController设置为UISplitViewController,拆分视图控制器的shouldAutorotate()返回{ {1}},所以不应该成为问题。

2 个答案:

答案 0 :(得分:0)

在这里'也许'溶液

似乎在访问window属性并且WindowSubclass实例化时,屏幕并不真正知道它的定位。

如果您在window!.frame = UIScreen.mainScreen().bounds中添加application(didFinishLaunchingWithOptions:),则会自行排序。

答案 1 :(得分:0)

我认为发生这种情况的原因是因为启动应用的UIViewController。在所有其他UIViewControllers上,我的子类UIWindow在我将rootViewController设置为其显示的UIViewController时旋转正常。我不确定这是出于某种原因的预期行为还是iOS中的错误。