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
这将正确设置场景的大小。
我正在创建一个游戏,当我将菜单场景导航到我的设置场景(使用按钮)时一切正常。
但是当我去定位时,在我的设置场景中说 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
这将正确设置场景的大小。