Swift 帧都没有对齐

Swift Frames are all out of alignment

我正在创建一个游戏,当我将菜单场景导航到我的设置场景(使用按钮)时一切正常。

但是当我去定位时,在我的设置场景中说 UISlider 定位全部用完了。我的意思是,如果我尝试将它放在 self.frame.size.width/2 旁边,它大约在屏幕上的 3/4 处,并且离中间不远...

我确定我从一个场景到另一个场景的方式有问题 - 这是我的代码

func settingsScene() {

    println("Settings Scene Pressed!")
    var settingscene: Settings = Settings(size: CGSizeMake(768, 1024))
    var spriteView: SKView = self.view as SKView!
    settingscene.scaleMode = .AspectFill
    var trans :SKTransition = SKTransition.doorsOpenHorizontalWithDuration(0.5)
    spriteView.presentScene(settingscene, transition: trans)
    settingsButton.removeFromSuperview()
    button.removeFromSuperview()

}

上面的代码在我的菜单场景中,当我按下 "Go to settings button"

时运行

我确定问题出在 size: CGSizeMake(768,1024)

这是我的滑块代码 - 我不确定如何定位在场景中间

    sliderDemo.frame = CGRectMake(0.0, 0.0, 100.0, 50.0)
    sliderDemo.frame.origin = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame))
    sliderDemo.minimumValue = 0.5
    sliderDemo.maximumValue = 5.0
    sliderDemo.continuous = true
    sliderDemo.tintColor = UIColor.redColor()
    sliderDemo.value = 3.0
    sliderDemo.addTarget(self, action: "sliderValueDidChange:", forControlEvents: .ValueChanged)
    view.addSubview(sliderDemo)

首先,我建议您在初始化 SettingsScene 时不要使用硬编码大小。我建议您使用当前场景的大小。类似的东西:

var settingscene: Settings = Settings(size: self.size)

所以不同的场景总是一样大的。

而是为了解决你的问题。这里的问题是,默认情况下 GameViewController 和 GameScene 的大小不同。所以你必须改变尺寸以相互匹配:

为此,打开您的 GameViewController 并在您的 viewDidLoad 方法中的行 scene.scaleMode = .AspectFill 之后和 skView.presentScene(scene) 之前添加以下行:

    scene.size = skView.bounds.size

这将正确设置场景的大小。