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

私は同じ問題を抱えていますが、それは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 に答える
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

2年半後、私は同じ問題に直面しています。SKLableNode の幅が特定のサイズを超えると、黒い長方形として表示されるようです。簡単なバイナリ検索を行ったところ、不適切なサイズが 2038 から 2054 の間であることがわかりました。ここで手足に出て、カットオフが 2048 であると言います。SpriteKit のバグだと思いますか? 私はそれに関するドキュメントを見ていません...

回避策:

  1. フォント サイズを半分にし、スケールを 2 倍にします。これが私が現在行っていることです。つまり、fontSize が 64 から 32 になり、setScale(2) になりました。欠点は、フォントの品質が高くないことです。また、これにより制限が有効な 4096 ポイントに増えるだけです。したがって、非常に長いラベルはまだ機能しません。
  2. テキストを 2048 以下の SKLabelNode を生成するチャンクに分割します。この方法でテキスト レイアウトを正しく取得するのは難しい場合があります。
于 2017-11-16T19:54:13.870 に答える