gpt4 book ai didi

ios - 按基线对齐多个 SKLabelNodes

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:03:31 26 4
gpt4 key购买 nike

我有一组 SKLabelNodes。每个节点代表一个单词的一个字母。每个节点都是 SKSpriteNode 的子节点。 spriteNode 有一个显式设置的高度([text sizeWithAttributes:@{NSFontAttributeName : font}]; 返回的高度),并且具有与 标签节点

然后 labelNode 位于 spriteNode 的中心,并且具有 verticalAlignmentMode = SKLabelVerticalAlignmentModeBaseline。在稍后阶段,我需要为每个字母设置背景图像(这将使用 spriteNode 完成)。出于测试目的,我使用纯色,使问题明显:

enter image description here

如您所见,字母“y”的下部显示在容器 spriteNode 下方。同样的事情也会发生在 'g' 和其他字母上。我还应该解释一下,每个 letterNode(即 spriteNode 和子 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;

我认为问题是由我定位和/或调整 labelspriteNodes 大小的方式引起的。我曾尝试使用不同的 verticalAlignmentModes,并据此重新定位标签,但都无济于事。如果我知道一种基于文本基线对齐节点的方法,那将是一个开始。

我希望发生的事情是,灰色背景向下延伸,覆盖“y”的下部,并且发生在所有 letterNodes(不管他们是否需要它,比如“y”)。并且文本仍然按基线对齐。

任何帮助将不胜感激,

提前致谢。

最佳答案

事实证明,根据 Apple 文档 (https://developer.apple.com/library/ios/Documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/TypoFeatures/TextSystemFeatures.html),出现在边框下方的(在我的示例中)'y' 部分称为“下降器”。

UIFont 有一个名为 descender 的属性,它为您提供下降的最高值。我用它来增加包含 SKLabelNodeSKSpriteNode 的大小,并使标签正确居中。

关于ios - 按基线对齐多个 SKLabelNodes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26284735/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com