Swift version: 5.10
Although you can create an SKSpriteNode
from a color and size, most folks create them from textures – image data stored in an asset catalog or texture atlas. SpriteKit’s textures are handled using their own class called SKTexture
, and you can load them individually then use them to change the texture used to draw a sprite.
At its most basic, you can change a sprite’s texture like this:
let texture1 = SKTexture(imageNamed: "newTexture")
someSprite.texture = texture1
However, that only works if your sprite and the texture are the same size – if they don’t, the texture will get squashed to fit the available space.
If the sprite and texture are different sizes then a better thing to do is use the setTexture()
action, passing in true for its resize
parameter like this:
let texture2 = SKTexture(imageNamed: "newTexture")
let action = SKAction.setTexture(texture2, resize: true)
someSprite.run(action)
That will switch the texture over, then grow the sprite to fit the new texture size.
SPONSORED Superwall lets you build & test paywalls without shipping updates. Run experiments, offer sales, segment users, update locked features and more at the click of button. Best part? It's FREE for up to 250 conversions / mo and the Superwall team builds out 100% custom paywalls – free of charge.
Sponsor Hacking with Swift and reach the world's largest Swift community!
Available from iOS 7.1
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.
Link copied to your pasteboard.