美文网首页CAEmitterLayer 粒子动画
iOS粒子动画CAEmitterLayer

iOS粒子动画CAEmitterLayer

作者: 苍天兄弟 | 来源:发表于2019-06-20 13:48 被阅读0次

    CAEmitterLayer

    CAEmitterLayer是CALayer的子类,CAEmitterLayer是用于实现基于Core Animation的粒子发生器系统,可以用来做一些酷炫的效果,而CAEmitterCell就是CAEmitterLayer中发射的具体的粒子了。比如红包雨,下雨的效果都可以用CAEmitterLayer效果实现。

    CAEmitterLayer属性
    CGSize emitterSize  发射源的尺寸大小,动画显示的范围
    CAEmitterLayerEmitterShape emitterShape
    /*  发射源的形状
    kCAEmitterLayerPoint       点的形状,粒子从一个点发出
    kCAEmitterLayerLine        线的形状,粒子从一条线发出
    kCAEmitterLayerRectangle   矩形形状,粒子从一个矩形中发出
    kCAEmitterLayerCuboid      立方体形状,这里要生效的话需要设置z方向的数据,如果不设置就同矩形状
    kCAEmitterLayerCircle      圆形,粒子会在圆形范围发射
    kCAEmitterLayerSphere      立体圆形(3D),三维的圆形,同样需要设置z方向数据,不设置则通二维一样
    */
    CAEmitterLayerEmitterMode emitterMode
    /* 发射模式
    kCAEmitterLayerPoints      从发射器中发出
    kCAEmitterLayerOutline     从发射器边缘发出
    kCAEmitterLayerSurface     从发射器表面发出
    kCAEmitterLayerVolume      相对于3D形状的“球体内”或“立方体内”发射,从发射器中点发出
    */
    CAEmitterLayerRenderMode renderMode
    /*显示模式
    kCAEmitterLayerUnordered    粒子是无序出现的,多个发射源将混合
    kCAEmitterLayerOldestFirst  声明久的粒子会被渲染在最上层
    kCAEmitterLayerOldestLast   刚开始的粒子会被渲染在最上层
    kCAEmitterLayerBackToFront  粒子的渲染按照Z轴的前后顺序进行
    kCAEmitterLayerAdditive     这种模式会进行粒子混合
    */
    CGPoint emitterPosition  粒子发射形状的中心点
    NSArray<CAEmitterCell *> *emitterCells  具体发射的粒子
    
    CAEmitterCell
    + (instancetype)emitterCell  初始化方法
    + (nullable id)defaultValueForKey:(NSString *)key;//获取某一属性的值
    - (BOOL)shouldArchiveValueForKey:(NSString *)key;//返回指定的属性值是否可以归档。基本上不用
    @property(nullable, copy) NSString *name;//设置发射粒子的名称
    @property(getter=isEnabled) BOOL enabled;//是否允许发射粒子渲染
    @property float birthRate;//发射粒子的产生率,默认0
    @property float lifetime;//发射粒子的生命周期,以秒为单位。默认0
    @property float lifetimeRange;//发射粒子的生命周期范围,以秒为单位。默认0
    @property CGFloat emissionLatitude;//发射粒子的指定纬度,纬度角代表了在x-z轴平面坐标系中与x轴之间的夹角,也就是粒子在Z轴方向的发射角度,默认0
    @property CGFloat emissionLongitude;//发射粒子的指定经度,经度角代表了在x-y轴平面坐标系中与x轴之间的夹角,也就是粒子在xy平面的发射角度,默认0:
    @property CGFloat emissionRange;//发射粒子角度范围,默认0,以锥形分布开的发射角度。角度用弧度制。粒子均匀分布在这个锥形范围内;
    @property CGFloat velocity;//发射粒子的速度 ,默认0
    @property CGFloat velocityRange;//发射粒子的速度范围 ,默认0
    @property CGFloat xAcceleration;//发射粒子x方向的加速度,默认0
    @property CGFloat yAcceleration;//发射粒子y方向的加速度,默0
    @property CGFloat zAcceleration;//发射粒子z方向的加速度,默认0
    @property CGFloat scale;//发射粒子的缩放系数,默认1
    @property CGFloat scaleRange;//发射粒子的缩放系数范围,默认0
    @property CGFloat scaleSpeed;//发射粒子的缩放速度,默认0
    @property CGFloat spin;//发射粒子的平均旋转速度,默认是0
    @property CGFloat spinRange;//发射粒子的平均旋转速度范围,默认是0
    @property(nullable) CGColorRef color;//发射粒子的颜色,默认白色
    @property float redRange;//发射粒子红色的范围,默认0
    @property float greenRange;//发射粒子绿色的范围,默认0
    @property float blueRange;//发射粒子蓝色的范围,默认0
    @property float alphaRange;//发射粒子透明度的范围,默认0
    @property float redSpeed;//发射粒子红色的变化速度,默认0
    @property float greenSpeed;//发射粒子绿色的变化速度,默认0
    @property float blueSpeed;//发射粒子蓝色的变化速度,默认0
    @property float alphaSpeed;//发射粒子透明度的变化速度,默认0
    @property(nullable, strong) id contents;//发射的渲染粒子的内容,可以设置为一个CGImage的对象
    @property CGRect contentsRect;//发射的渲染粒子内容的渲染范围
    @property CGFloat contentsScale;//内容的缩放系数
    

    相关文章

      网友评论

        本文标题:iOS粒子动画CAEmitterLayer

        本文链接:https://www.haomeiwen.com/subject/bdcdqctx.html