SKLabelNode创建黑色矩形

时间:2015-06-29 14:38:55

标签: ios swift sprite-kit sklabelnode

我看到this question,但它没有明确解决问题,也不是完全一样。我试图简单地添加带有一些文本的SKLabelNode。我从来没有遇到过问题,但出于某种原因,这种情况正在发生: Black bar is the SKLabelNode 这是我用来生成节点的代码:

var announceLabel = SKLabelNode(fontNamed: "Baskerville")
announceLabel.text = "ERROR LOADING ANNOUNCEMENT"
announceLabel.fontColor = UIColor.blackColor()
announceLabel.fontSize = 200
announceLabel.setScale(twitterButton.frame.height / announceLabel.frame.height)
announceLabel.position = CGPoint(x: self.frame.midX, y: self.frame.midY)
self.addChild(announceLabel)

我正在iPhone 6上测试这个,我在创建标签节点时从未发生过这种情况。我尝试了不同的字体,位置和比例,但没有效果。任何帮助是极大的赞赏!谢谢!

3 个答案:

答案 0 :(得分:0)

刚刚测试了一些,我找到了答案。字体太大了,我猜想SpriteKit会出错。我将字体大小更改为50并且工作正常(我在其他标签节点上使用了字体大小200并且从未遇到过问题):

var announceLabel = SKLabelNode(fontNamed: "Baskerville")
announceLabel.text = "ERROR LOADING ANNOUNCEMENT"
announceLabel.fontColor = UIColor.blackColor()
announceLabel.fontSize = 50
announceLabel.setScale(twitterButton.frame.height / announceLabel.frame.height)
announceLabel.position = CGPoint(x: self.frame.midX, y: self.frame.midY)
self.addChild(announceLabel)

答案 1 :(得分:0)

两年半之后,我遇到了同样的问题。看起来当SKLableNode的宽度超过一定大小时,它只显示为黑色矩形。我做了一个快速的二分搜索,发现不好的大小是在2038年和2054年之间,所以我会在这里走出去,说截止时间是2048.我猜这是SpriteKit中的一个错误?我没有看到任何关于它的文件......

解决方法:

  1. 将字体大小减半,缩小比例。这就是我现在所做的,即我的fontSize从64到32,以及setScale(2)。缺点是字体不是高质量的。此外,这仅将您的限制增加到有效的4096点。所以一个很长的标签仍然不会起作用。
  2. 将文本剪切成可生成不大于2048的SKLabelNodes的块。以这种方式获得文本布局可能会很痛苦。

答案 2 :(得分:0)

我从未来来给您带来一些休假。 在2018年,大型SKLabelNodes仍然存在相同的问题。

现在,许多Apple设备都使用@ 3x资产,而且很明显,Simulator吸收了大量的@ 3x图像,并将其显示为黑色的矩形/正方形。需要明确的是:此错误仅限于模拟设备上的高分辨率图像。

它也影响SKLabelNodes,因为它的工作方式。在显示之前,SKLabelNode将文本渲染为高分辨率图像。将其呈现为高分辨率图像是有意义的,因为文本的可读性需要细节,还需要缩放。

因此,如果选择足够大的字体会让您遇到同样的麻烦,可以肯定地说模拟器@ 3x渲染过程需要一些调试。


TL; TR

  • 此线程和其他线程中有关该问题的报告表明,这是一个模拟器错误,仅会影响由模拟设备显示的大于@ 2x的图像。
  • SKLabelNode生成用于展览的高分辨率图像,因此 有问题。
  • 如果您确定自己在做什么,那么在实际设备上看起来会很好。