Swift version: 5.0
Pixel-perfect physics is just one line of code in SpriteKit. Don't believe me? Here you go:
player = SKSpriteNode(imageNamed: "player") player.position = CGPoint(x: 100, y: 384) player.physicsBody = SKPhysicsBody(texture: player.texture!, size: player.size)
That last line is the one that does the magic: SpriteKit will use the alpha values of your sprite (i.e., the transparent pixels) to figure out which parts should be part of a collision.
As you might imagine, pixel-perfect collision detection is significantly slower than using rectangles or circles, so you should use it carefully.
Available from iOS 7.0 – see Hacking with Swift tutorial 23
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.