1

我看到了这个问题,但它没有明确的解决问题的方法,也不完全相同。我试图简单地添加一个带有一些文本的 SKLabelNode 。我从来没有遇到过问题,但由于某种原因,这种情况正在发生: 黑条是 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 上对此进行测试,并且在创建标签节点时从未发生过这种情况。我尝试了不同的字体、位置和比例,但没有效果。任何帮助是极大的赞赏!谢谢!

4

4 回答 4

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)
于 2015-06-29T14:42:48.767 回答
0

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

变通方法:

  1. 将字体大小减半,比例加倍。这就是我现在正在做的事情,即我的 fontSize 从 64 变为 32,并且 setScale(2)。缺点是字体质量不高。此外,这只会增加您对有效 4096 点的限制。所以一个很长的标签仍然行不通。
  2. 将您的文本切成块,生成不大于 2048 的 SKLabelNodes。以这种方式获得文本布局可能会很痛苦。
于 2017-11-16T19:54:13.870 回答
0

我来自未来,为你带来了一些终结。在 2018 年,大型 SKLabelNodes 仍然存在同样的问题。

现在很多 Apple 设备都使用 @3x 资源,很明显 Simulator 很讨厌复制大型 @3x 图像,将它们展示为黑色矩形/正方形。需要明确的是:此错误仅限于模拟设备上的高分辨率图像。

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

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


TL;TR

  • 该线程和其他线程中的问题报告表明,这是一个 SIMULATOR 错误,仅影响大于模拟设备显示的 @2x 的图像。
  • SKLabelNode 生成一个高分辨率的图像用于展览,所以有问题。
  • 如果您确定自己在做什么,那么它在真实设备上看起来会很好。
于 2018-06-28T22:14:51.163 回答
0

我有同样的问题,但它只是在 iPhone 6+ 模拟器上,我认为实际设备也是如此。在 6、6、4s、iPad 2 和 iPad air 上运行良好。

为了使文本显示,我必须做的是减小字体大小。在我的情况下,我使用的字体大小为 64(Hobo Std)并且不得不将其减小到 56。但是,我发现线的长度是部分原因。如果该行大约 45 个字符或更少,它以 64 号显示,但是当它大约 50 个字符长时,它变成一个 64 号的黑色矩形,但在 56 号时工作正常。所以似乎是字体大小和数量的组合人物。

这一定是一个错误,但仍在 Xcode 6.4 中

于 2015-08-24T05:29:52.370 回答