如何使用 Xcode 7 Beta 使用 swift 代码将按钮放在中心?

How to put buttons on center with swift code using Xcode 7 Beta?

我用 Xcode 7 Beta 制作了一个游戏,我放了一些按钮,但它们没有按预期排列,在某些 iPhone 上,它们位于左侧,而在另一些 iPhone 上,它们位于右侧,它应该保持在中心位置。

This is on iPhone 5/5s and how is supposed to be

This is on iPhone 4s

This is on iPhone 6

我使用的代码是:

override func didMoveToView(view: SKView) {

    leaderboard()
    facebookShare()
    twitterShare()
    removeAds()
}




func leaderboard() {
   let myNode = SKSpriteNode(imageNamed: "buttonLeaderboard")

    myNode.position = CGPoint(x: CGFloat(120 + BUTTON_WIDTH + BUTTON_SPACING), y: view!.frame.maxY * 0.25)
    myNode.size = CGSizeMake(80.0, 40.0)
    self.addChild(myNode)
}


func facebookShare() {
    let facebookShareNode = SKSpriteNode(imageNamed: "buttonFacebookShare")
    facebookShareNode.position = CGPoint(x: CGFloat(130 + BUTTON_WIDTH * 2 + BUTTON_SPACING * 2), y: view!.frame.maxY * 0.25)
    facebookShareNode.size = CGSizeMake(40.0, 40.0)
    self.addChild(facebookShareNode)
}


func twitterShare() {
    let twitterShareNode = SKSpriteNode(imageNamed: "buttonTwitterShare")
    twitterShareNode.position = CGPoint(x: CGFloat(180 + BUTTON_WIDTH * 2 + BUTTON_SPACING * 2), y: view!.frame.maxY * 0.25)
    twitterShareNode.size = CGSizeMake(40.0, 40.0)
    self.addChild(twitterShareNode)
}

func removeAds() {
    let removeAdsNode = SKSpriteNode(imageNamed: "buttonRemoveAds")
    removeAdsNode.position = CGPoint(x: CGFloat(250 + BUTTON_WIDTH * 2 + BUTTON_SPACING * 2), y: view!.frame.maxY * 0.25)
    removeAdsNode.size = CGSizeMake(80.0, 40.0)
    self.addChild(removeAdsNode)
}

我希望你能帮我解决我遗漏的问题。

您可能希望使用 Autolayout's constraints mechanism 来定义这些按钮在不同屏幕上的所需位置。否则,您可能最终会进行不必要且复杂的宽度和偏移计算,只是为了在视图中定位几个元素。

您可以将这些按钮分组到 UIView 元素中并使用约束使元素居中。

设置元素中心水平和垂直约束示例: