¿Utiliza un CAGradientLayer en SpriteKit?

Creé un CAGradientLayer, que funciona muy bien. Pero mi problema es que quiero utilizarlo en SpriteKit como background …

¿Existe la posibilidad de realizarlo? ¿Tal vez al ponerlo en un SKSpriteNode?

Gracias por adelantado

EDITAR:

Desafortunadamente theres un post de error:

28 de mayo 19:08:19 amirs-mbp Gradiente [2845]: CGContextSaveGState: context no válido 0x0. Este es un error grave. Esta aplicación, o una biblioteca que usa, está utilizando un context no válido y, por lo tanto, contribuye a una degradación global de la estabilidad y confiabilidad del sistema. Este aviso es una cortesía: arregle este problema. Se convertirá en un error fatal en una próxima actualización. 28 de mayo 19:08:19 amirs-mbp Gradiente [2845]: CGContextSaveGState: context no válido 0x0. Este es un error grave. Esta aplicación, o una biblioteca que usa, está utilizando un context no válido y, por lo tanto, contribuye a una degradación global de la estabilidad y confiabilidad del sistema. Este aviso es una cortesía: arregle este problema. Se convertirá en un error fatal en una próxima actualización. 28 de mayo 19:08:19 amirs-mbp Gradiente [2845]: CGContextClipToRect: context no válido 0x0. Este es un error grave. Esta aplicación, o una biblioteca que usa, está utilizando un context no válido y, por lo tanto, contribuye a una degradación global de la estabilidad y confiabilidad del sistema. Este aviso es una cortesía: arregle este problema. Se convertirá en un error fatal en una próxima actualización. 28 de mayo 19:08:19 amirs-mbp Gradiente [2845]: CGContextTranslateCTM: context no válido 0x0. Este es un error grave. Esta aplicación, o una biblioteca que usa, está utilizando un context no válido y, por lo tanto, contribuye a una degradación global de la estabilidad y confiabilidad del sistema. Este aviso es una cortesía: arregle este problema. Se convertirá en un error fatal en una próxima actualización. 28 de mayo 19:08:19 amirs-mbp Gradiente [2845]: CGContextScaleCTM: context no válido 0x0. Este es un error grave. Esta aplicación, o una biblioteca que usa, está utilizando un context no válido y, por lo tanto, contribuye a una degradación global de la estabilidad y confiabilidad del sistema. Este aviso es una cortesía: arregle este problema. Se convertirá en un error fatal en una próxima actualización. 28 de mayo 19:08:19 amirs-mbp Gradiente [2845]: CGContextDrawLinearGradient: context no válido 0x0. Este es un error grave. Esta aplicación, o una biblioteca que usa, está utilizando un context no válido y, por lo tanto, contribuye a una degradación global de la estabilidad y confiabilidad del sistema. Este aviso es una cortesía: arregle este problema. Se convertirá en un error fatal en una próxima actualización. 28 de mayo 19:08:19 amirs-mbp Gradiente [2845]: CGContextRestoreGState: context no válido 0x0. Este es un error grave. Esta aplicación, o una biblioteca que usa, está utilizando un context no válido y, por lo tanto, contribuye a una degradación global de la estabilidad y confiabilidad del sistema. Este aviso es una cortesía: arregle este problema. Se convertirá en un error fatal en una próxima actualización. 28 de mayo 19:08:19 amirs-mbp Gradiente [2845]: CGContextRestoreGState: context no válido 0x0. Este es un error grave. Esta aplicación, o una biblioteca que usa, está utilizando un context no válido y, por lo tanto, contribuye a una degradación global de la estabilidad y confiabilidad del sistema. Este aviso es una cortesía: arregle este problema. Se convertirá en un error fatal en una próxima actualización.

Creo que tendrás mucha mejor suerte con esto:

https://github.com/braindrizzlestudio/BDGradientNode

Primero convierte la capa a UIImage *:

- (UIImage *)imageFromLayer:(CALayer *)layer { if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) UIGraphicsBeginImageContextWithOptions([layer frame].size, NO, [UIScreen mainScreen].scale); else UIGraphicsBeginImageContext([layer frame].size); [layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *outputImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return outputImage; } 

Y luego inicie un SKSpriteNode con él:

 SKSpriteNode* node = [SKSpriteNode spriteNodeWithColor:[UIColor colorWithPatternImage:image] size:yourLayer.bounds.size] 

Esta function me sirve para crear un SpriteNode de CAGradientLayer. Tenga en count que es una function de GameScene, por lo que es el context 'self.frame' al que se refiere para get el tamaño correcto del gradiente.

 func layerToSKSpriteNode(layer : CALayer) -> SKSpriteNode { var view = UIView() layer.frame = self.frame view.layer.addSublayer(layer) UIGraphicsBeginImageContext(self.frame.size) view.layer.renderInContext(UIGraphicsGetCurrentContext()) var bgImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return SKSpriteNode(texture: SKTexture(image: bgImage)) }