2017-04-14 59 views
1

我有一些CAEmitterCell颜色属性的奇怪行为,或者我不明白它的正确性。CAEmitterCell颜色属性不起作用

我有一个细胞

let cell = CAEmitterCell() 

通过简单的PNG文件的内容被吸入黑

cell.contents = UIImage(named: "particle")?.cgImage 

我试图将其更改为绿色

cell.color = UIColor.green.cgColor 

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

任何人都可以帮助我了解我做错了什么吗?

+0

你有颗粒图像吗? –

+0

我不确定我了解你的问题。 – pulp

+0

您是否在项目捆绑中使用名称为particle的图像? –

回答

1

这是一个简单的例子,您可以如何更改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 
    } 

} 

动画的例子。

enter image description here

+0

我使用从https://www.hackingwithswift.com/example-code/calayer/how-to-emit-particles-using-caemitterlayer采取完全相同的代码 – pulp

2

好吧,该案最初图像的颜色:颜色越深的图像 - 你有较少的颜色变化。所以最好使用白色图像作为你的粒子发射器%