如何填充UIImage透明部分的颜色?

时间:2016-11-06 23:11:12

标签: ios sprite-kit uiimage

我有一个带透明区域和背景的PNG图像。

enter image description here

我想将它作为SKTexture用于我的SKSpriteNode,但之前它应该在某些UIColor中着色。

我试图用

来实现这个目标
func colorImage(origImage: UIImage, color: UIColor) -> UIImage {
    UIGraphicsBeginImageContextWithOptions(origImage.size, true, 0)
    let context = UIGraphicsGetCurrentContext()
    context?.setFillColor(color.cgColor)
    context?.fill(CGRect(origin: CGPoint(x: 0, y: 0), size: origImage.size))
    let flipVertical = CGAffineTransform.init(a: 1, b: 0, c: 0, d: -1, tx: 0, ty: origImage.size.height)
    context?.concatenate(flipVertical)
    context?.draw(origImage.cgImage!, in: CGRect(origin: CGPoint(x: 0, y: 0), size: origImage.size))
    let image = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    return image!
}

但它也为背景着色:(

enter image description here

我如何只为云着色?

感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

为此,最好只使用云纹理,然后将颜色混合到SKSpriteNode中。

https://developer.apple.com/reference/spritekit/skspritenode/1519639-color

请注意,您还需要设置colorBlendFactor。默认值为0.

https://developer.apple.com/reference/spritekit/skspritenode/1519780-colorblendfactor