12

我想知道有没有办法为 SKLabelNode 设置背景颜色而不是字体颜色。我正在寻找类似下面提到的代码,它在 ios 应用程序中可用。

     label.backgroundColor = [UIColor redColor];
4

3 回答 3

11

尝试将 SKLabelNode 添加为 SKSpriteNode 的子节点。

SKLabelNode *label = [[SKLabelNode alloc]initWithFontNamed:@"Helvetica"];
label.position = CGPointMake(0, -label.frame.size.height/2);

SKSpriteNode *background = [SKSpriteNode spriteNodeWithColor:[UIColor redColor] size:CGSizeMake(label.frame.size.width, label.frame.size.height)];
background.position = CGPointMake(200, 100);

[background addChild:label];
[self addChild:background];
于 2015-04-24T17:36:33.120 回答
2

将 SKLabelNode 添加为 SKSpriteNode 的子项可以工作,但它会隐藏文本。所以,我通过将背景的 zPosition 设置为负数来解决这个问题。这是swift 3代码:

var label = SKLabelNode(fontNamed: "Helvetica")
label.position = CGPoint(x: CGFloat(0), y: CGFloat(-label.frame.size.height / 2))
var background = SKSpriteNode(color: UIColor.red, size: CGSize(width: CGFloat(label.frame.size.width), height:CGFloat(label.frame.size.height)))background.position = CGPoint(x: CGFloat(200), y: CGFloat(100))
background.zPosition = -1
label.addChild(background)
self.addChild(label)
于 2017-01-12T06:46:15.930 回答
1

确保在从标签节点计算背景的 GCSize 之前包含文本值,否则返回的值将为零,因为它没有文本来确定标签的大小。

..关于图层问题更正

于 2019-05-18T00:22:51.670 回答