• UI基础--粒子动画


    粒子发送器:CAEmitterLayer

    粒子:CAEmitterCell

    渐变图层:CAGradientLayer

    添加代码:

    @interface RootViewController ()
    @property (nonatomic, strong) CAEmitterLayer *emitterLayer;
    @end
    
    @implementation RootViewController
    
    
    -(CAEmitterLayer *)emitterLayer{
        
        if (_emitterLayer) {
            return _emitterLayer;
        }
        _emitterLayer = [[CAEmitterLayer alloc]init];
        [self.view.layer addSublayer:_emitterLayer];
        return _emitterLayer;
    }
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
        self.view.backgroundColor = [UIColor whiteColor];
        self.title = @"大头儿子";
        
        UIImageView *View = [[UIImageView alloc]initWithFrame:self.view.frame];
        //    View.center = CGPointMake(200,450);
        View.contentMode = UIViewContentModeScaleAspectFit;
        View.image = [UIImage imageNamed:@"1.jpg"];
        
        [self.view addSubview:View];
        
        self.emitterLayer.frame = CGRectMake(0, 0, self.view.frame.size.width, 600);
    //    self.view.backgroundColor = [UIColor blackColor];
        //    设置粒子发送器 每秒钟发送的数量
        self.emitterLayer.birthRate = 1;
        //    self.emitterLayer.emitterPosition 中心点
        self.emitterLayer.position = CGPointMake(400,900);
        self.emitterLayer.emitterShape = kCAEmitterLayerCircle;
        //    设置粒子发送器的样式
        self.emitterLayer.renderMode = kCAEmitterLayerOldestLast;
        self.emitterLayer.emitterMode = kCAEmitterLayerVolume;
        NSMutableArray *array = [[NSMutableArray alloc]init];
        for (int i=0; i<5; i++) {
            CAEmitterCell *cell3 = [CAEmitterCell emitterCell];
            cell3.contents = (id)[UIImage imageNamed:[NSString stringWithFormat:@"桃心%d",i+1]].CGImage;
            //    粒子出生量
            cell3.birthRate = 1;
            //    存活时间->单位秒
            cell3.lifetime = 5;
            cell3.lifetimeRange = 2;
            //    发送速度
            cell3.velocity = 50;
            cell3.velocityRange = 100;
            // 粒子发送的方向
            cell3.emissionLatitude = 50*(i+1)*M_PI/180;
            //    发送的加速度
            cell3.yAcceleration = -50;
            //        散发粒子的范围 - 弧度
            cell3.emissionRange = 200;
            //    把粒子的cell 放到粒子发送器上
            [array addObject:cell3];
        }
        
        self.emitterLayer.emitterCells = array;
        
        
        //创建渐变图层对象
        CAGradientLayer *layer = [CAGradientLayer layer];
        layer.frame = self.view.frame;
        //图层的透明度
        layer.opacity = 0.2;
        //设置图层颜色渐变的开始点
        layer.startPoint = CGPointMake(0, 0);
        //设置图层颜色渐变的结束点
        layer.endPoint = CGPointMake(1,0.5);
        //颜色渐变的百分比 数组
        layer.locations = @[@0.2,@0.6];
        //渐变颜色的数组 数组不接受的CGColor类型 强转成id类型的
        layer.colors = @[(id)[UIColor redColor].CGColor,(id)[UIColor whiteColor].CGColor,(id)[UIColor cyanColor].CGColor,];
        [self.view.layer addSublayer:layer];
    //
    }

    效果图:

  • 相关阅读:
    vue @click.native和@click.stop和@click.self
    CSS改变图片颜色的filter(滤镜)属性
    iframe自适应内容高度
    python将两个列表对应成为字典
    Scrapy307重定向
    scrapy- invalid hostname: 'http'
    tensorflow2.0常用操作记录
    深度学习之Xavier初始化
    win10上tensorflow-gpu2.0安装完全指南
    如何使用Ubuntu/Linux系统远程连接Windows桌面
  • 原文地址:https://www.cnblogs.com/LzwBlog/p/5728501.html
Copyright © 2020-2023  润新知