他の多くの人と同じように、私もこの問題を修正する必要がありました。私のアプローチは、Chris のソリューションよりもはるかに単純でした。SKLabelNode
と呼ばれるサブクラスを作成しましたNORLabelNode
。
これはGitHubで入手でき、ココアポッドも入手できます。
SKLabelNodes のセットを作成し、これらをサブノードとして使用するだけです。自分で似たようなものを実装したい場合、主な要点は次のメソッドです。
- (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
し、テキスト、色、フォント、fontSize などをいつでもその場で変更できます。