Я думаю, что проблема в том, что UIImage - это векторная графика c, и только UIImageViews правильно обрабатывают их. Возможно, мы можем принудительно заставить его работать с растровым изображением, чтобы заставить его работать должным образом.
Вот некоторый экспериментальный код, который вы можете попробовать:
let image = UIImage(systemName: "gear").withTintColor(.red)
let data = image.pngData()
let newImage = UIImage(data:data)
let texture = SKTexture(image: newImage)
let sprite = SKSpriteNode(texture: texture,size: CGSize(width: 32, height: 32))