I have been using the following code in my game. The Problem is that i am unable to make multi-line label in spritekit as i was able to do using CCLabelTTF...... Can Somebody help me. Also i am unable to use either \t or \n in my code... Thanks for the reply in advance
SKLabelNode *winner = [SKLabelNode labelNodeWithFontNamed:@"Arial"];
winner.text = @"Another\nTest";
winner.fontSize = 32;
winner.fontColor = [SKColor blueColor];
winner.position = CGPointMake(100 , 160);
[self addChild:winner];
You can use NSLayoutManager to line-break the string to match a desired width, as hinted by this question.
Note that NSLayoutManager is available on iOS beginning with iOS 7.
It appears that
SKLabelNode
only supports one line of text at a time. I can't find it in the SpriteKit documentation or anywhere else official, but it's mentioned on the 47th slide of this WWDC presentation. You'll have to useUILabel
instead, which you can see explained here.Like a lot of others I also needed a fix to this problem. My approach was a lot simpler than Chris' solution. I have made a subclass of
SKLabelNode
calledNORLabelNode
.It's available at GitHub and there is also a cocoapod available.
It simply creates a set of SKLabelNodes and use these as subnodes. If you want to implement something similar yourself the main gist is this method:
The above is somewhat simplified as the labels also inherit most of the other properties from their parent.
The linespacing can be altered through a CGFloat property. Apart from this is works just like an ordinary
SKLabelNode
and you can change text, color, font, fontSize etc. on the fly whenever you feel like.I had the same problem. I created a drop-in replacement for SKLabelNode called DSMultilineLabelNode that supports word wrap, line breaks, etc. The underlying implementation draws the string into a graphics context and then applies that to a texture on an SKSpriteNode.
It's available on GitHub at:
https://github.com/downrightsimple/DSMultilineLabelNode