为SKLabelNode设置背景颜色?

12

我想知道是否有一种方法可以为SKLabelNode设置背景颜色而不是字体颜色。我正在寻找像下面提到的代码一样的东西,这在iOS应用程序中是可用的。

     label.backgroundColor = [UIColor redColor];
3个回答

12

试将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];

现在SKLabelNode中的文本没有显示出来,而我添加了SKSpriteNode的特定区域被其颜色填充。 - Jaffer Sheriff
你是否设置了label.text和label.fontColor属性以确保它可见? - Sudeep
是的。在添加这些代码行之前,一切都正常工作。如果我给SKSpriteNode设置clearColor,那么什么也看不见。 - Jaffer Sheriff

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)

2
另一种方法是将SKLabelNode作为SKSpriteNode的子节点添加,这样文本就不会被隐藏。 - Crashalot

1

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

关于图层问题是正确的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接