如何使用 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 元素中并使用约束使元素居中。
设置元素中心水平和垂直约束示例:
我用 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 元素中并使用约束使元素居中。
设置元素中心水平和垂直约束示例: