I wanted to create an SKLabelNode, which is supposed to have always the same length (for a word guessing game). Unfortunately SKLabelNode decides to always cut off any leading and trailing spaces. This behavior is not described in the documentation. How can I avoid/switch off that behavior?
Asked
Active
Viewed 381 times
7
-
2have you set horizontal alignment mode to left or right aligned? If alignment is center (default) it just doesn't matter how many spaces you prefix/suffix. – CodeSmile Mar 25 '14 at 20:13
1 Answers
1
If you simply want labels to line up so that they are right aligned, then use a right alignment mode.
myLabel.horizontalAlignmentMode = SKLabelHorizontalAlignmentModeRight;
However, if you are trying to create a rectangle around the SKLabelNode, then you'll find calculateAccumulatedFrame does indeed strip any spaces before calculating the width of the label, and returns the wrong size.
But you can cheat - use a character as a dummy sizing metric to add onto your frame size.
SKLabelNode* dummyPaddingLetter = [SKLabelNode labelNodeWithFontNamed:<your font name>];
dummyPaddingLetter.fontSize = <your font size>;
dummyPaddingLetter.text = @"W"; // something 'wide'
float fOneSpace = [dummyPaddingLetter calculateAccumulatedFrame].size.width;
Now add as many multiples of fOneSpace to the width of your rectangle, and it'll probably be about right.

GilesDMiddleton
- 2,279
- 22
- 31