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?
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With