2014-03-25 8 views
7

Ich wollte einen SKLabelNode erstellen, der immer die gleiche Länge haben soll (für ein Wortratespiel). Leider beschließt SKLabelNode, führende und nachfolgende Leerzeichen immer zu entfernen. Dieses Verhalten wird nicht in der Dokumentation beschrieben. Wie kann ich dieses Verhalten vermeiden/ausschalten?SKLabelNode entfernt führende und nachfolgende Leerzeichen - Wie kann ich das stoppen?

+2

Haben Sie den horizontalen Ausrichtungsmodus auf links oder rechts ausgerichtet eingestellt? Wenn die Ausrichtung zentriert ist (Standard), spielt es keine Rolle, wie viele Leerzeichen Sie vor/nachstellen. – LearnCocos2D

Antwort

1

Wenn Sie Etiketten einfach so ausrichten möchten, dass sie rechtsbündig ausgerichtet sind, verwenden Sie einen rechten Ausrichtungsmodus.

myLabel.horizontalAlignmentMode = SKLabelHorizontalAlignmentModeRight; 

Wenn Sie jedoch ein Rechteck um den SKLabelNode versuchen, zu erstellen, dann werden Sie feststellen, calculateAccumulatedFrame in der Tat alle Leerzeichen nicht abzustreifen, bevor die Breite des Etiketts zu berechnen, und gibt die falsche Größe.

Aber Sie können schummeln - verwenden Sie ein Zeichen als Dummy-Größe Metrik, um auf Ihre Rahmengröße hinzuzufügen.

SKLabelNode* dummyPaddingLetter = [SKLabelNode labelNodeWithFontNamed:<your font name>]; 
dummyPaddingLetter.fontSize = <your font size>; 
dummyPaddingLetter.text = @"W"; // something 'wide' 
float fOneSpace = [dummyPaddingLetter calculateAccumulatedFrame].size.width; 

nun so viele Vielfache von fOneSpace auf die Breite des Rechtecks, hinzufügen und es wird wahrscheinlich zu stimmen.

+0

Schöne Problemumgehung, um das Problem zu lösen. Vielen Dank. –

Verwandte Themen