使用CAEmitterLayer在圆或CGPath周围绘制粒子

我正在尝试使用iOS 5的粒子系统(CAEmitterLayer和CAEmitterCell)围绕一个圆(甚至更好的是CGPath)绘制粒子,但我不知道该怎么做。 我能做的最好的是做一个弧(通过修改CAEmitterCell的yAcceleration属性),但是我不能做一个完整的圆。 当然,我可以做多个弧来模拟一个圆,但“结”是非常明显的。 此外,我不想使用蒙版,因为它看起来像在边缘的粒子被裁剪。 任何想法如何做到这一点?

您可以使用CAKeyframeAnimation来为emitterPosition设置animation效果:

CAKeyframeAnimation *particleAnimation = [CAKeyframeAnimation animationWithKeyPath:@"emitterPosition"]; [particleAnimation setPath:yourPath]; [particleAnimation setDuration:1.0]; [particleAnimation setCalculationMode:kCAAnimationPaced]; [yourEmitterLayer addAnimation:particleAnimation forKey:@"yourAnimation"]; 
 yourEmitter.emitterShape = kCAEmitterLayerCircle; yourEmitter.emitterMode = kCAEmitterLayerOutline;