layer的动画

动画效果在我们的App用的不多,但确是很有意思的一个点,今天就来介绍一个非常牛X的动画效果,不吹不黑,保证会让你学到很多。

![Uploading 屏幕快照 2016-07-25 下午8.59.39_708364.png . . .]



#import "ViewController.h"

@interface ViewController ()

@property(nonatomic,strong)CALayer *layer;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    
    // 创建粒子Layer
    CAEmitterLayer *starStar = [CAEmitterLayer layer];
    
    // 粒子发射位置
    starStar.emitterPosition = CGPointMake(120,0);
    
    // 发射源的尺寸大小
//    starStar.emitterSize     = self.view.bounds.size;
    starStar.emitterSize = CGSizeMake(300, 400);
    // 发射模式
    
    //layerPoints是聚焦点发送,左上角落下的散射模式
    //kCAEmitterLayerOutline 没有超出线条,顶部截取,有明显的横截面
    //kCAEmitterLayerSurface 无截取面,采用了全面,完整
    //kCAEmitterLayerVolume 上移整体
    starStar.emitterMode     = kCAEmitterLayerVolume;
    
    // 发射源的形状
    /**
     kCAEmitterLayerRectangle
     
     CA_EXTERN NSString * const kCAEmitterLayerCuboid

     CA_EXTERN NSString * const kCAEmitterLayerCircle

     CA_EXTERN NSString * const kCAEmitterLayerSphere
     */
    starStar.emitterShape    = kCAEmitterLayerLine;
    
    // 创建雪花类型的粒子
    CAEmitterCell *starFlake    = [CAEmitterCell emitterCell];
    
    // 粒子的名字
    starFlake.name = @"snow";
    
    // 粒子参数的速度乘数因子
    starFlake.birthRate = 20.0;
    starFlake.lifetime  = 120.0;
    
    // 粒子速度 -即速度越快 数量越少
    starFlake.velocity  = 20;
    
    // 粒子的速度范围
    starFlake.velocityRange = 20;
    
    // 粒子y方向的加速度分量
    starFlake.yAcceleration = 1;
    
    // 周围发射角度
    starFlake.emissionRange = 0.5 * M_PI;
    
    // 子旋转角度范围
    starFlake.spinRange = 0.25 * M_PI;
    starFlake.contents  = (id)[[UIImage imageNamed:@"yellow"] CGImage];
    
    // 设置雪花形状的粒子的颜色
    starFlake.color      = [[UIColor whiteColor] CGColor];
    starFlake.redRange   = 1.5f;
    starFlake.greenRange = 2.2f;
    starFlake.blueRange  = 2.2f;
    
    starFlake.scaleRange = 0.6f;
    starFlake.scale      = 0.7f;
    
    starStar.shadowOpacity = 1.0;
    starStar.shadowRadius  = 0.0;
    starStar.shadowOffset  = CGSizeMake(0.0, 0.0);
    
    // 粒子边缘的颜色
    starStar.shadowColor  = [[UIColor whiteColor] CGColor];
    
    // 添加粒子
    starStar.emitterCells = @[starFlake];
    
    // 将粒子Layer添加进图层中
    [self.view.layer addSublayer:starStar];
    
    // 形成遮罩
    UIImage *image      = [UIImage imageNamed:@"bg_main"];
    _layer              = [CALayer layer];
    _layer.frame        = (CGRect){CGPointZero, self.view.bounds.size};
    _layer.contents     = (__bridge id)(image.CGImage);
    _layer.position     = self.view.center;
    starStar.mask    = _layer;
}



@end

你可能感兴趣的:(layer的动画)