2017-07-29 19 views
1

我想創建一個位於每個設備左上角的SKLabelNode。此外,在左上角的標籤左側,我想要一張硬幣圖像,以顯示這是當前硬幣計數標籤。每次我將我的標籤放在我的iPhone 6s +的角落時,它都不在iPad的角落。如何在我的通用應用程序中的每個設備的角落放置硬幣標籤?

這裏是我到目前爲止的代碼:

cornerCoin.position = CGPoint(x: screenWidth/-3.1, y: screenHeight/3.175) 
    cornerCoin.zPosition = 10 
    cameraNode.addChild(cornerCoin) 

    coinLabel.position = CGPoint(x: screenWidth/-2.4, y: screenHeight/8) 
    coinLabel.zPosition = 1 
    coinLabel.fontSize = 50 
    coinLabel.fontColor = UIColor.black 
    coinLabel.fontName = "04b19" 
    cameraNode.addChild(coinLabel) 
+0

什麼是screenWidth&screenHeight?我假設你的場景有一個0,0的anchorPoint? –

回答

1

就個人而言,我不會被跟蹤屏幕寬度/ screenHeight,它違背SpriteKit的基礎開始(你的現場表現爲你的虛擬屏幕,這是你應該如何處理它裏面的所有內容)相反,你應該做的是將屏幕轉換爲場景,這種方式無論是縮放模式還是錨點,你的標籤都是你想要的地方。

爲了讓您的視圖的右上角轉換爲場景,你做

if let view = scene.view 
{ 
    let topRightPos = view.convert(CGPoint(x:view.frame.maxX,y:view.frame.minY),to:scene) 
    let camTopRight = scene.convert(topRightPos,to:cameraNode) 
} 

現在我們知道我們的右上方的位置是:

我們可以做

if let view = scene.view 
{ 
    let topRightPos = view.convert(CGPoint(x:view.frame.maxX,y:view.frame.minY),to:scene) 
    let camTopRight = scene.convert(topRightPos,to:cameraNode) 

    coinLabel.position = camTopRight 
    coinLabel.zPosition = 1 
    coinLabel.fontSize = 50 
    coinLabel.fontColor = UIColor.black 
    coinLabel.fontName = "04b19" 
    coinLabel.horizontalAlighmentMode = .right 
    coinLabel.verticalAlighmentMode = .top   
    cameraNode.addChild(coinLabel) 

} 

右對齊我們的標籤,使文本總是延伸到左側,然後添加硬幣,我們這樣做:

if let view = scene.view 
{ 
    let topRightPos = view.convert(CGPoint(x:view.frame.maxX,y:view.frame.minY),to:scene) 
    let camTopRight = scene.convert(topRightPos,to:cameraNode) 
    coinLabel.position = camTopRight 
    coinLabel.zPosition = 1 
    coinLabel.fontSize = 50 
    coinLabel.fontColor = UIColor.black 
    coinLabel.fontName = "04b19" 
    coinLabel.horizontalAlighmentMode = .right 
    coinLabel.verticalAlighmentMode = .top   
    cameraNode.addChild(coinLabel) 

    cornerCoin.position = CGGPoint(x:0.0,y:coinLabel.frame.midY) 
    cornerCoin.anchorPoint = CGPoint(x:1.0,y:0.5) 
    cornerCoin.zPosition = 10 
    cameraNode.addChild(cornerCoin) 
} 

我們的標籤現在應該位於我們相機的右上角位置,並且硬幣應該位於我們標籤的左側與文本垂直居中。

如果您不喜歡頂部對齊的外觀,您可能想要玩標籤的位置。

相關問題