2017-04-14 89 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

好吧,該案最初圖像的顏色:顏色越深的圖像 - 你有較少的顏色變化。所以最好使用白色圖像作爲你的粒子發射器%