【问题标题】:Setting background color for SKLabelNode?为 SKLabelNode 设置背景颜色?
【发布时间】:2015-04-24 17:15:46
【问题描述】:

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

     label.backgroundColor = [UIColor redColor];

【问题讨论】:

    标签: ios skspritenode sklabelnode


    【解决方案1】:

    尝试将 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 的特定区域已填充其颜色。
    • 您是否设置了label.text和label.fontColor属性以确保其可见?
    • 是的。在添加这些代码行之前一切正常。如果我把clearColor 给SKSpriteNode 那么什么都看不见。
    【解决方案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)
    

    【讨论】:

    • 替代方案:将 sklabelnode 添加为 skspritenode 的子节点。那么文本将不会被隐藏。
    【解决方案3】:

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

    ..关于图层问题的更正

    【讨论】:

      猜你喜欢
      • 2010-11-08
      • 2020-12-06
      • 1970-01-01
      • 2011-02-11
      • 1970-01-01
      • 2013-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多