Come molti altri ho anche bisogno di una correzione a questo problema. Il mio approccio era molto più semplice della soluzione di Chris. Ho creato una sottoclasse di SKLabelNode
denominata NORLabelNode
.
E 'disponibile allo GitHub e c'è anche un cocoapod disponibile.
Crea semplicemente un set di SKLabelNodes e li utilizza come sottonodi. Se si desidera implementare qualcosa di simile se stessi il senso principale è questo metodo:
- (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];
}
Quanto sopra è un po 'semplificato le etichette ereditano anche la maggior parte degli altri oggetti di loro genitore.
La linepacing può essere modificata tramite una proprietà CGFloat. Oltre a questo, funziona come un normale SKLabelNode
e puoi cambiare testo, colore, carattere, fontSize ecc. Al volo ogni volta che vuoi.
fonte
2014-04-20 08:47:39
So che questa è una vecchia risposta, ma la seconda parte di questa risposta mi dà fastidio: "Usa invece UILabel". Infine sapevo che 'UILabel' non può essere usato all'interno di un' SKScene', e qui spiegato spiega solo come usare un 'UILabel', non come usarlo in un' SKScene'. L'unico modo in cui riesco a pensare è che puoi catturare i contenuti resi da una 'UILabel 'nascosta, e metterli in un' SKSpriteNode' (in realtà sto cercando di evitare questo approccio, che mi ha portato a questa domanda) – Knight0fDragon