zoukankan      html  css  js  c++  java
  • 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];
    //
    }

    效果图:

  • 相关阅读:
    IDEA连接Spark集群执行Scala程序
    win10安装mysql,及重装
    python生产和消费kafka数据
    protobuf 协议浅析
    操作系统-第十三章-I/O系统
    操作系统-第十二章-大容量存储结构
    操作系统-第十一章-文件系统的实现
    JSONP跨域提交请求
    标识多个物体并返回物体中心坐标方法的实现
    SkyWalking Agent端日志插件的编写历程与使用说明
  • 原文地址:https://www.cnblogs.com/LzwBlog/p/5728501.html
Copyright © 2011-2022 走看看