I have a CAEmitterLayer
instance that emits some CAEmitterCells
. I'm wondering, is it possible to pause this layer such that no new CAEmitterCells
are produced and the ones that have been produced remained fixed in their position on the screen? Then, when the CAEmitterLayer
instance is "un-paused", the fixed CAEmitterCells
on the screen start to move again.
Thanks for any help here.
EDIT
Setting:
emitterLayer.speed = 0.1
where emitterLayer
is an instance of a subclass of CAEmitterLayer
, just removes the layer completely from the view.
Setting:
emitterLayer.lifetime = 0.0
just stops any new emitterCells
being produced but doesn't "freeze" the existing emitterCells
at the current position.
You can set the
lifetime
property of theCAEmitterLayer
to0
, which will cause newly emitted cells to not even be rendered, but will leave already existing cells unaffected. When you want to "un-pause" your emitter layer, you can simply resetlifetime
to whatever it was before the pause.To freeze the existing cells as well, you can set
speed
to0
and also add atimeOffset
.Then you can simply call it like
emitterLayer.pause()