像许多其他人一样,我也需要解决这个问题。我的方法比 Chris 的解决方案简单得多。我做了一个SKLabelNode
被调用的子类NORLabelNode
。
它在GitHub 上可用,也有一个 cocoapod 可用。
它只是创建一组 SKLabelNode 并将它们用作子节点。如果你想自己实现类似的东西,主要的要点是这个方法:
- (NSArray *)labelNodesFromText:(NSString *)text{
NSArray *substrings = [text componentsSeparatedByString:@"\n"];
NSMutableArray *labelNodes = [[NSMutableArray alloc] initWithCapacity:[substrings count]];
NSUInteger labelNumber = 0;
for (NSString *substring in substrings) {
SKLabelNode *labelNode = [SKLabelNode labelNodeWithFontNamed:self.fontName];
labelNode.text = substring;
labelNode.fontColor = self.fontColor;
labelNode.fontSize = self.fontSize;
labelNode.horizontalAlignmentMode = self.horizontalAlignmentMode;
labelNode.verticalAlignmentMode = self.verticalAlignmentMode;
CGFloat y = self.position.y - (labelNumber * self.fontSize * self.lineSpacing);
labelNode.position = CGPointMake(self.position.x, y);
labelNumber++;
[labelNodes addObject:labelNode];
}
return [labelNodes copy];
}
上面的内容有些简化,因为标签还从其父级继承了大多数其他属性。
可以通过 CGFloat 属性更改行间距。除此之外,它就像普通的一样SKLabelNode
,您可以随时更改文本、颜色、字体、字体大小等。