のコレクションを持っていSKLabelNodes
ます。各ノードは、単語の文字を表します。各ノードは の子ですSKSpriteNode
。にはspriteNode
明示的な高さ ( によって返される高さ[text sizeWithAttributes:@{NSFontAttributeName : font}];
) が設定されており、幅は と同じlabelNode
です。
はのlabelNode
内側に中央揃えされ、spriteNode
がありますverticalAlignmentMode = SKLabelVerticalAlignmentModeBaseline
。後の段階で、各文字に背景画像を設定する必要があります (これは を使用して行いますspriteNode
)。テスト目的で、無地を使用して問題を明らかにしています。
ご覧のとおり、文字「y」の下の部分がコンテナの下に表示されていspriteNode
ます。'g' やその他の文字でも同じことが起こります。また、それぞれletterNode
(つまり、spriteNode
and child labelNode
) は垂直方向に中央に配置され、別の 内で水平方向に間隔をあけて配置されSKSpriteNode
、単語のすべての文字を格納するために使用されることも説明する必要があります。
を作成するコードletterNode
:
SKLabelNode *labelNode = [SKLabelNode labelNodeWithText:text];
labelNode.fontName = font.fontName;
labelNode.fontSize = font.pointSize;
labelNode.fontColor = colour;
labelNode.position = CGPointMake(0, -floor(height/2));
// height is the same explicit height used to create the spriteNode.
SNLetterNode *letter = [SNLetterNode spriteNodeWithColor:[UIColor lightGrayColor] size:CGSizeMake(labelNode.frame.size.width, height)];
letter.letter = text;
letter.labelNode = labelNode;
letter.size = CGSizeMake(self.labelNode.frame.size.width, height);
単語のSKSpriteNode
すべての文字を含む は次のように作成されます。
CGSize fullWordSize = [text sizeWithAttributes:@{NSFontAttributeName : font}];
SNWordNode *word = [SNWordNode spriteNodeWithColor:[UIColor clearColor] size:fullWordSize];
word.letterNodes = letterNodes;
word.text = text;
この問題は、 and の配置および/またはサイズ変更の方法によって引き起こされていると思いlabel
ますspriteNodes
。verticalAlignmentModes
別の を使用して、それに基づいてラベルの位置を変更しようとしましたが、すべて役に立ちませんでした。テキストのベースラインに基づいてノードを整列させる方法を知っていれば、それが出発点になります。
私が望んでいるのは、灰色の背景が下に伸びて「y」の下部を覆い、それがすべて letterNodes
で起こることです(「y」のように必要かどうかに関係なく)。また、テキストがベースラインによって整列されるようにします。
どんな助けでも大歓迎です、
前もって感謝します。