美文网首页CALayer
iOS CAEmitterLayer运用

iOS CAEmitterLayer运用

作者: 三段先森 | 来源:发表于2017-02-04 16:31 被阅读10次

    CAEmitterLayer 和 CAEmitterCell是完成粒子动画的两个类,上代码演示一下大概怎么用的:

    - (void)addEmitter {
        
        UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0, self.view.bounds.size.width, self.view.bounds.size.height)];
        imageView.image = [UIImage imageNamed:@"huajiTree"];
        imageView.contentMode = UIViewContentModeScaleToFill;
        [self.view addSubview:imageView];
        
     
        CAEmitterLayer *emitterLayer = [CAEmitterLayer layer];
        //例子发射位置
        emitterLayer.emitterPosition = CGPointMake(self.view.center.x, 120);
        //发射源的尺寸大小
        emitterLayer.emitterSize = CGSizeMake(100,1);
        //发射模式
        emitterLayer.emitterMode = kCAEmitterLayerSurface;
        //发射源的形状
        emitterLayer.emitterShape = kCAEmitterLayerLine;
        
        //创建粒子
        CAEmitterCell *huajiCell = [CAEmitterCell emitterCell];
        //粒子的名字
        huajiCell.name = @"huaji";
        //粒子参数的速度乘数因子
        huajiCell.birthRate = 3.0;
        huajiCell.lifetime = 20.0;
        //粒子速度
        huajiCell.velocity =10.0;
        //粒子的速度范围
        huajiCell.velocityRange = 10;
        //粒子y方向的加速度分量
        huajiCell.yAcceleration = 5;
        //周围发射角度
        huajiCell.emissionRange = 0.8 * M_PI;
        //子旋转角度范围
        huajiCell.spinRange = 0.1 * M_PI;
        huajiCell.contents = (id)[[UIImage imageNamed:@"image_emoticon25"] CGImage];
    
        
        emitterLayer.emitterCells = [NSArray arrayWithObjects:huajiCell,nil];
        [imageView.layer insertSublayer:emitterLayer atIndex:0];
    }
    
    

    如果要从一个点发射,就改成这样:

        //发射源的尺寸大小
        emitterLayer.emitterSize = CGSizeMake(1,1);
        //发射源的形状
        emitterLayer.emitterShape = kCAEmitterLayerPoint;
    

    Demo地址,附上效果图:手动滑稽

    相关文章

      网友评论

        本文标题:iOS CAEmitterLayer运用

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