It’s funny how the tasks that should be easy end up consuming the most amount of time. As of this writing, there is no easy way to outline text in SpriteKit. It’s common to see approach that add a shadow node, but sometimes more contrast is needed. Here’s what I have discovered.
The first approach is to use
NSMutableAttributedString with a
UILabel. Have a look at the code below:
Oddly enough, those two notes above caused me an hour or two of frustration. But, aside from those, the idea is relatively straightforward. The one complaint I have with this approach is that the text is added as a subview. It would be much easier if the text was an object SpriteKit was familiar with.
Fortunately, ASAttributedLabelNode was shared with the world, and makes the text into a
SKSpriteNode. Implementation is identical to the above except for the last 3 lines. They will become:
let myLabel = ASAttributedLabelNode(size: self.size) myLabel.attributedString = myMutableString myLabel.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame)); self.addChild(myLabel)
This is perfect since we can now work with positions, children, SKActions, and so on.