2017-02-11 3 views
1

Я хочу преобразовать SKSpriteNode в UIImage.cast SKSpriteNode to UIImage

let testImage = SKSpriteNode(imageNamed: "PlainProject") as! UIImage 

, но я получаю сбой на резьбе выше. Есть ли другой способ сделать это?

+0

, пожалуйста, проверьте ответы и ответьте –

ответ

2

Вы должны получить cgImage от texture спрайта, а затем бросить его UIImage:

let testImage = SKSpriteNode(imageNamed: "someImage.png") 
let image = UIImage(cgImage: (testImage.texture?.cgImage())!) 

или более качественная версия без снятия усилия a cgImage, которые могут быть nil:

let image = UIImage() 
if testImage.texture?.cgImage() != nil{ 
    image = UIImage(cgImage: (testImage.texture?.cgImage())!) 
} 

Результат (в детской площадке):

enter image description here

Это именно то, что мое изображение выглядит. Надеюсь это поможет!

+0

Это действительно хорошо работает. Я обнаружил, что работа с текстурой означает, что мне нужна дополнительная работа по масштабированию изображения, но теперь все хорошо. –

+0

Добро пожаловать. Если у вас есть еще один вопрос, пожалуйста, спросите –

2

Вы не можете напрямую это сделать.

Прежде всего, вы должны получить texture от SKSpriteNode.

После этого вы можете получить изображение с textureOfNode!.cgImage(), как показано в примере ниже:

let testNode = SKSpriteNode(imageNamed: "Spaceship") 
let textureOfNode = testNode.texture 
let imageFromTexture = UIImage.init(cgImage: textureOfNode!.cgImage()) 
print(imageFromTexture) //<UIImage: 0x61000008afa0>, {394, 347} 
+0

также хороший ответ! Спасибо –

+0

Рад помочь вам .. :) –