CAEmitterCell颜色属性不起作用

pul*_*ulp 5 colors ios caemitterlayer caemittercell swift

我对CAEmitterCell颜色属性有一些奇怪的行为,或者我不太了解。

我有一个牢房

let cell = CAEmitterCell()
Run Code Online (Sandbox Code Playgroud)

具有简单的.png文件的内容,该文件被绘制为黑色

cell.contents = UIImage(named: "particle")?.cgImage
Run Code Online (Sandbox Code Playgroud)

我尝试将其更改为绿色

cell.color = UIColor.green.cgColor
Run Code Online (Sandbox Code Playgroud)

但是它仍然是黑色的。我试图将媒体资源中此图像的“渲染为”属性更改为“模板图像”,但没有效果。

谁能帮助我了解我在做什么错?

pul*_*ulp 7

好的,情况是初始图像的颜色:图像越暗-您的颜色变化越少。因此,最好将白色图像用于粒子发射器%)


Ole*_*huk 0

这是如何更改 的颜色的简单示例CAEmitterCell

class ViewController: UIViewController {

    override func viewDidAppear(_ animated: Bool) {
        createParticles()
    }

    func createParticles() {
        let particleEmitter = CAEmitterLayer()

        particleEmitter.emitterPosition = CGPoint(x: view.center.x, y: -96)
        particleEmitter.emitterShape = kCAEmitterLayerLine
        particleEmitter.emitterSize = CGSize(width: view.frame.size.width, height: 1)

        let red = makeEmitterCell(color: UIColor.red)
        let green = makeEmitterCell(color: UIColor.green)
        let blue = makeEmitterCell(color: UIColor.blue)

        particleEmitter.emitterCells = [red, green, blue]

        view.layer.addSublayer(particleEmitter)
    }

    func makeEmitterCell(color: UIColor) -> CAEmitterCell {
        let cell = CAEmitterCell()
        cell.birthRate = 3
        cell.lifetime = 7.0
        cell.lifetimeRange = 0
        cell.color = color.cgColor
        cell.velocity = 200
        cell.velocityRange = 50
        cell.emissionLongitude = CGFloat.pi
        cell.emissionRange = CGFloat.pi / 4
        cell.spin = 2
        cell.spinRange = 3
        cell.scaleRange = 0.5
        cell.scaleSpeed = -0.05

        cell.contents = UIImage(named: "images")?.cgImage
        return cell
    }

}
Run Code Online (Sandbox Code Playgroud)

以及动画的例子。

在此输入图像描述