【问题标题】:Swift Frames are all out of alignmentSwift Frames 都没有对齐
【发布时间】:2015-01-25 12:22:19
【问题描述】:

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

但是当我去定位时,在我的设置场景中说一个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()

}

上面的代码在我的菜单场景中,当我按下“转到设置按钮”时运行

我确定问题出在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)

【问题讨论】:

    标签: swift frame bounds


    【解决方案1】:

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

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

    所以不同的场景总是相同的大小。

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

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

        scene.size = skView.bounds.size
    

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

    【讨论】:

    • 我尝试了第一个修正 - self.size,但它们的位置仍然有点奇怪。是我在屏幕上放置它们的方式吗?我将编辑我的代码以显示我如何放置按钮/滑块
    • 将我发布的第二行也添加到您的 GameViewController。这应该可以解决您的问题。
    • 现在完全对齐了!绝妙的答案...但是有一个问题 - 按钮没有按下,滑块也没有滑动...非常奇怪,为什么会发生这种情况?
    • 查看此答案以了解您的问题的可能答案:stackoverflow.com/questions/7212692/…
    猜你喜欢
    • 2021-02-04
    • 2015-08-16
    • 1970-01-01
    • 2021-04-08
    • 1970-01-01
    • 1970-01-01
    • 2020-04-12
    • 2020-05-13
    • 1970-01-01
    相关资源
    最近更新 更多