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];
//
}

效果图:

时间: 2024-08-25 21:33:27

UI基础--粒子动画的相关文章

UI基础--烟花动画

首先我们先导入系统的库: 添加下面的代码即可: #import "FireworksViewController.h" @interface FireworksViewController () @end @implementation FireworksViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.vie

iOS开发UI篇—核心动画(基础动画)

iOS开发UI篇—核心动画(基础动画) 一.简单介绍 CAPropertyAnimation的子类 属性解析: fromValue:keyPath相应属性的初始值 toValue:keyPath相应属性的结束值 随着动画的进行,在长度为duration的持续时间内,keyPath相应属性的值从fromValue渐渐地变为toValue 如果fillMode=kCAFillModeForwards和removedOnComletion=NO,那么在动画执行完毕后,图层会保持显示动画执行后的状态.但

ios开发-UI基础-超级猜图

[注意]转载时请注明出处博客园-吃唐僧肉的小悟空http://www.cnblogs.com/hukezhu/ 本篇文章介绍一个比较综合的小应用----超级猜图. 功能分析: 根据显示的图片,在下面的待选项按钮中选中正确答案按钮,选中的按钮会显示在正确答案按钮中 答案错误,答案颜色变为红色,分数减小 答案正确,答案颜色变为蓝色,两秒自动跳入下一题,分数增加 点击"下一题"可以进入下一个题目 点击"大图",可以放大显示图片,再次点击图片或者背景,图片缩小至原来大小 点

ios开发-UI基础-应用管理(单纯界面)改进5-使用代理实现监听下载按钮的点击(delegate)

[注意]转载时请注明出处博客园-吃唐僧肉的小悟空http://www.cnblogs.com/hukezhu/ 前几篇文章介绍了一个应用管理的小应用,从最开始的单纯实现功能,一步一步就行改进\封装,上篇文章是使用xib进行了优化,本篇文章使用代理实现监听下载按钮的点击. 在原来的基础上,使用代理的主要思路分析: 首先要新建一个协议 声明协议的要实现的方法(一般为optional) 声明一个遵守该协议的代理的属性 使用代理,通知其代理完成操作 在代理中的实现步骤: 遵守协议 设置代理(一般通过拖线

iOS开发UI基础—xib的简单使用

iOS开发UI基础-xib的简单使用 一.简单介绍 xib和stotyboard的比较,一个轻量级一个重量级. 二.xib的简单使用 1.建立xib文件 建立的xib文件命名为appxib.xib 2.对xib进行设置 根据程序的需要,这里把view调整为自由布局 建立view模型(设置长宽等参数) 调整布局和内部的控件 完成后的单个view 3.使用xib文件的代码示例 YYViewController.m文件代码如下: 1 // 2 // YYViewController.m 3 // 10

iOS开发UI基础—transframe属性(形变)

iOS开发UI基础-transframe属性(形变) 1. transform属性 在OC中,通过transform属性可以修改对象的平移.缩放比例和旋转角度 常用的创建transform结构体方法分两大类 (1) 创建"基于控件初始位置"的形变 CGAffineTransformMakeTranslation(平移) CGAffineTransformMakeScale(缩放) CGAffineTransformMakeRotation(旋转) (2) 创建"基于trans

OS开发UI基础—手写控件,frame,center和bounds属性

OS开发UI基础—手写控件,frame,center和bounds属性 一.手写控件 1.手写控件的步骤 (1)使用相应的控件类创建控件对象 (2)设置该控件的各种属性 (3)添加控件到视图中 (4)如果是button等控件,还需考虑控件的单击事件等 (5)注意:View Contollor和view的关系 2.注意点 在OC开发中,Storyboard中的所有操作都可以通过代码实现,程序员一定要熟练掌握代码布局界面的能力! 设置控件监听方法的示例代码如下: [btn addTarget:sel

iOS开发UI基础—字典转模型(部分内容转载他人)

iOS开发UI基础-字典转模型 开发中,通常使用第三方框架可以很快的实现通过字典转模型,通过plist创建模型,将字典的键值对转成模型属性,将模型转成字典,通过模型数组来创建一个字典数组,通过字典数组来创建一个模型数组等等. 一.能完成功能的"问题代码" 1.从plist中加载的数据 2.实现的代码 1 // 2 // LFViewController.m 3 // 03-应用管理 4 // 5 // Created by apple on 14-5-22. 6 // Copyrigh

iOS开发UI基础—九宫格坐标计算

iOS开发UI基础-九宫格坐标计算 一.要求 完成下面的布局 二.分析 寻找左边的规律,每一个uiview的x坐标和y坐标. 三.实现思路 (1)明确每一块用得是什么view (2)明确每个view之间的父子关系,每个视图都只有一个父视图,拥有很多的子视图. (3)可以先尝试逐个的添加格子,最后考虑使用for循环,完成所有uiview的创建 (4)加载app数据,根据数据长度创建对应个数的格子 (5)添加格子内部的子控件 (6)给内部的子控件装配数据 四.代码示例 1 // 2 // YYVie