即使我的应用程序处于横向状态,self.size也是(320,480)

时间:2015-03-04 18:11:05

标签: swift landscape screen-size

如果我打印self.size我得到(320,480)但它应该是(480,320),因为我的应用程序是横向的,这就是我进入主视图的方式:

var playScene = Menu(size: self.size)
let skView = self.view! as SKView

skView.ignoresSiblingOrder = true
playScene.scaleMode = .ResizeFill
playScene.size = skView.bounds.size
skView.presentScene(playScene)

编辑:我发现在iphone 5s上,self.size是(568,320)所以问题只出现在iphone 4s或IOS 7上

2 个答案:

答案 0 :(得分:0)

在UIKit运行布局之前,视图的大小不会更新。在viewDidLoad返回后发生这种情况。因此,如果该代码位于viewDidLoad,那么您的检查时间过早了。查看viewDidLayoutSubviewsviewDidAppear:中的尺寸。

答案 1 :(得分:0)

我必须使用此功能才能为我正在使用的设备获得正确的屏幕尺寸:

func screenSize() -> CGSize {
    var screenSize: CGSize = UIScreen.mainScreen().bounds.size
    if ((NSFoundationVersionNumber <= NSFoundationVersionNumber_iOS_7_1) && UIInterfaceOrientationIsLandscape(UIApplication.sharedApplication().statusBarOrientation)) {//If ios 7

        return CGSizeMake(screenSize.height, screenSize.width);
    }
    return screenSize;
}

我替换我的代码将视图更改为:

var playScene = Menu(size: self.size)
let skView = self.view! as SKView

skView.ignoresSiblingOrder = true
playScene.scaleMode = .ResizeFill
playScene.size = screenSize()
skView.presentScene(playScene)