的主导使用,图层倒影特效

iOS 烟花撒花效果,图层渐变,图层倒影特效。CAEmitterLayer粒子发射器

粒子发送器

CAGradientLayer 渐变色遮罩

iOS 烟花撒花效果,图层渐变,图层倒影特效。CAEmitterLayer粒子发射器

上一节自己写了三个关于视图图层的相关类,有关CALayer这几个类的应用和有些用法,正是大家在拍卖视图的时候要对他的图层来开始展览更动,必要注意的多少个地方,还恐怕有锚点的介绍,然后那篇主要说多个施用CALayer里面包车型客车二个类来实现二个烟花的特效。

澳门金沙30064.com 1

本条正是利用了CAEmitterLayer粒子发射器图层来构建的贰个职能,这么些动态截图工具也是下边包车型地铁心上人推荐的,效果很好很不错mac版地址,正是通过多个发射点来发出一些粒子(cell)的功力。
能够经过那个图层来“发射”一些cell,况且能够拉长不一致的cell,设置方向,速度等等,他也是贰个后续于CALayer的贰个子类,都以对视图的图层做一些管理,自带动画作用,非常少说上代码。

 @interface ViewController ()
 @property (nonatomic ,strong)CAEmitterLayer *emitterLayer;
 @end

 - (CAEmitterLayer *)emitterLayer{
      if (_emitterLayer) {
         return _emitterLayer;
     }
      _emitterLayer = [[CAEmitterLayer alloc]init];
      [self.view.layer addSublayer:_emitterLayer];
 //    _emitterLayer.position = CGPointMake(200, 200);

     return _emitterLayer;

  }

开首三个粒子发射器对象,增多到父视图上边。

 //使他的中心点为父视图的中心点,
   self.emitterLayer.emitterPosition = self.view.center;
   self.view.backgroundColor = [UIColor blackColor];
 //先设置粒子发送器的属性
 //设置粒子发送器每秒钟发送粒子数量
self.emitterLayer.birthRate = 2;
//设置粒子发送器的样式
self.emitterLayer.renderMode = kCAEmitterLayerAdditive;
  //初始化要发射的cell
 CAEmitterCell *cell = [CAEmitterCell emitterCell];
 //contents:粒子的内容
  cell.contents = (id)[UIImage imageNamed:@"星星"].CGImage;//他所需要对象类型的和图层类似
 //接着设置cell的属性
  //    粒子的出生量
cell.birthRate = 2;
  //    存活时间
cell.lifetime = 3;
cell.lifetimeRange = 1;
   //    设置粒子发送速度
   cell.velocity = 50;
cell.velocityRange = 30;
   //    粒子发送的方向
cell.emissionLatitude = 90*M_PI/180;
  //    发送粒子的加速度
cell.yAcceleration = -100;

  //    散发粒子的范围  ->  弧度
cell.emissionRange = 180*M_PI/180;

//最后把粒子的cell添加到粒子发送器  数组内可以添加多个cell对象
self.emitterLayer.emitterCells = @[cell];

它会活动给大家调换粒子(图层)然后经过我们给它的特性自动加多效果,发射的粒子并不是是View,而只是图层上边的一个突显层。

然后介绍一下发射器和cell的部分性质

1.粒子发送器图层

  • CAEmitterLayer:发送器
  • 每秒发送粒子数量:birthRate

发送形状的体制:emitterShape

 -  CA_EXTERN NSString * const kCAEmitterLayerPoint  点
 -  CA_EXTERN NSString * const kCAEmitterLayerLine   线
 -  CA_EXTERN NSString * const kCAEmitterLayerRectangle  举行
 -  CA_EXTERN NSString * const kCAEmitterLayerCuboid 立方体
 -  CA_EXTERN NSString * const kCAEmitterLayerCircle 曲线
 -  CA_EXTERN NSString * const kCAEmitterLayerSphere 圆形

发送的样式:emitterMode //120行开端

-  CA_EXTERN NSString * const kCAEmitterLayerPoints以点的方式  默认样式
-   CA_EXTERN NSString * const kCAEmitterLayerOutline线的样式
-   CA_EXTERN NSString * const kCAEmitterLayerSurface  以面的形式
-   CA_EXTERN NSString * const kCAEmitterLayerVolume    以团的样式

粒子出现的样式:renderMode//点进去第129行起首

    -   CA_EXTERN NSString * const kCAEmitterLayerOldestFirst最后一个出生的粒子在第一个
    -   CA_EXTERN NSString * const kCAEmitterLayerOldestLast最后出生的就在最后一个
    -   CA_EXTERN NSString * const kCAEmitterLayerBackToFront把后面的放到上面
    -   CA_EXTERN NSString * const kCAEmitterLayerAdditive叠加效果

在粒子发送器上边增加粒子:emitterCells

cell的一些质量

意味着粒子的是:CAEmitterCell 他不是多少个Layer contents:粒子的情节lifetime:存活时间 lifetimeRange:存活时间的限量
birthRate:每秒的粒子生成的多寡 emissionLatitude:散发的维度
他表示的是一个弧度 上下 emissionLongitude:散发的经度 ->弧度 ->左右
velocity:发送的快慢 速度越快发送的越远->重力velocityRange:发送速度的限量 xAcceleration; x,y,z轴的加快度 惯性 引力yAcceleration; zAcceleration; emissionRange:散发的限定 ->弧度
->范围 name:粒子的名字 能够经过名字 找到粒子

接下来我们把它在加一个cell设置不一致的质量

 CAEmitterCell *cell2 = [CAEmitterCell emitterCell];
     cell2.contents = (id)[UIImage imageNamed:@"点"].CGImage;
//    粒子的出生量
cell2.birthRate = 4;
//    存活时间
cell2.lifetime = 3;
cell2.lifetimeRange = 1;
//    设置粒子发送速度
cell2.velocity = 80;
cell2.velocityRange = 50;
//    粒子发送的方向
cell2.emissionLatitude = 90*M_PI/180;
//    发送粒子的加速度
cell2.yAcceleration = -100;

//    散发粒子的范围  ->  弧度
cell2.emissionRange = 180*M_PI/180;

//把粒子的cell添加到粒子发送器
//重新设置cell的emitterCells
self.emitterLayer.emitterCells = @[cell,cell2];

为了效果本身吧小红点的出生量和开头速度设置了大了部分,在加速度相同的动静下,散发范围一样,初阶速度越大进而cell2的偏移量也会大学一年级部分。发射器的渲染效果等得以和睦试一下不一样的体制有哪些分歧。

下一场是三个图层渐变的功效

2.渐变颜色
CAGradientLayer
澳门金沙30064.com 2

能够见到这么些图层的颜色是由3种颜色的渐变色组成的,越到主旨,颜色越重,越走近边缘颜色越淡,作为背景的效果很不错,在此地运用的也是CALayer的几个子类CAGradientLayer<
喎?” target=”_blank”
class=”keylink”>vcD4NCjxwcmUgY2xhc3M9″brush:java;”>
CAGradientLayer *layer = [CAGradientLayer layer]; layer.frame = self.view.frame; //设置颜色数组 layer.colors = @[(id)[UIColor colorWithRed:1.000 green:0.377 blue:0.624 alpha:1.000].CGColor, (id)[UIColor colorWithRed:0.597 green:1.000 blue:0.657 alpha:1.000].CGColor,(id)[UIColor colorWithRed:0.649 green:0.729 blue:1.000 alpha:1.000].CGColor];

在那边小编设置了3个颜色,让它在这多少个颜色中做二个渐变的作用。全体layer的质量他都足以应用

 //    layer.opacity = 0.7;//设置透明度可以看到背景的图片,看上去就像一层滤镜
 //渐变的起始点
layer.startPoint = CGPointMake(0, 0);
 //终止点
layer.endPoint = CGPointMake(1, 1);
 //渐变的区间      颜色所在的比例,第一个在十分之二的位置,第二个在十分之五的位置,第三个在十分之八的位置
//    layer.locations = @[0.2,0.5,0.8];
[self.view.layer addSublayer:layer];

澳门金沙30064.com 3

当本人设置了她的起首点为左上角,终止点为右下角的时候,他就改为了那样的多少个效率。这几个效应作为拍卖图层的效果很不错,有一定于滤镜的功用,但是两岸照旧有例外,滤镜是给图片增添特效,那一个是给图层增加特效。

本条类独有这么多属性,使用起来也比较轻巧,效果也很不错。

在接受来讲贰个倒影的职能,类似镜像的特效

3.复制图层CAReplicatorLayer

复制图层的意味便是把这些图层拷贝一份然后给她扩张效果,做一些transform的改造

复制图层首要的一些,假诺要动用复制图层,必须重写视图 layerClass
把原有的CALayer修改成CAReplicatorLayer

身为要选取CAReplicatorLayer的视图必须重写它的layerClass方法技巧运用CAReplicatorLayer复制图层。

先看一下意义

澳门金沙30064.com 4

能够看到它便是原图层的贰个镜像,颜色什么的相对淡了部分,当然那都以咱们给它的镜像(复制)的局部功力。接下来看是怎么使用的。

1.重写视图的layerClass方法
????????????
第一我们新建三个UIView的类,重写他的办法,第一步极其关键,假诺不重写那几个主意,视图的初步化都不会有功用。

首先自定义三个类,就先命名字为CanReplicatorView,承接与UIView

澳门金沙30064.com 5

下一场重写他的方式,在.M里面

  //只有这一步才能复制视图上面的layer
   //要想赋值视图的图层就必须重写这个视图的layerClass
   + (Class)layerClass{
      return [CAReplicatorLayer class];
  }

2.早先化视图

CanReplicatorView *repView = [[CanReplicatorView
alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];

//写三个大家要来得图片的视图增添上去
UIImageView *imageView = [[UIImageView
alloc]initWithFrame:CGRectMake(0, 0, 200, 200)];
imageView.contentMode = UIViewContentModeScaleAspectFit;
imageView.image = [UIImage imageNamed:@”屠龙刀”];

3.发轫化复制图层

CAReplicatorLayer 的主导使用,图层倒影特效。layer = (CAReplicatorLayer )repView.layer;

//给复制图层定义属性
//instanceCount layer的实例化数量 必须旗帜明显复制几份
layer.instanceCount = 2;//写个2就复制出来了1份,加上原图一共有2份了

4.给复制视图设置transform值

//instanceTransform代表复制图层的体制 Transform是原视图的体裁
//定义二个让视图向下移动400的transform值
CATransform3D transform = CATransform3DMakeTranslation(0, 400, 0);
//让视图向下有益400并旋转180度,成倒影状
layer.instanceTransform = CATransform3DRotate(transform, 180*M_PI/180,
1, 0, 0);

// 仍是可以够安装颜色的偏移量 发光度等
layer.instanceRedOffset = -0.2;//白灰偏移量
layer.instanceBlueOffset = -0.2;//蓝色
layer.instanceGreenOffset = -0.2;//绿色
layer.instanceAlphaOffset = -0.4;//折射率偏移量

5.增添视图
[self.view addSubview:repView];
//把显示图片的视图增多到大家的能够利用复制图层的视图上
[repView addSubview:imageView];

透过那四个职能能够让视图有各个成效,大家转移的只是图层,并不是视图的天性,给他们的图层加多了有的神效,在应用的时候让视图越发漂亮,也是iOS里面自带的有的管理功用。

烟花撒花效果,图层渐变,图层倒影特效。CAEmitterLayer粒子发射器 iOS
烟花撒花效果,图层渐变,图层倒影特效。CAEmitterLayer粒子发射器…

CAEmitterLayer :发送器

  • birthRate : 每秒发送粒子的数量
  • emitterMode: 发送的样式:
    • kCAEmitterLayerPoints //点(默认)
    • kCAEmitterLayerOutline//线
    • kCAEmitterLayerSurfack//面
    • kCAEmitterLayerVolume//团
  • renderMode
    • kCAEmitterLayerOldestFirst 最后的降生的粒子 在率先个
    • kCAEmitterLayerOldestLast 最终的诞生的粒子 在最后面
    • kCAEmitterLayerBackToFront 把后边的 放到地方
    • kCAEmitterLayerAdditive 叠加
  • emitterShape:发送形状的体制
    • kCAEmitterLayerPoint 点
    • kCAEmitterLayerLine 线
    • kCAEmitterLayerRectangle 矩形
    • kCAEmitterLayerCuboid 立方体
    • kCAEmitterLayerCircle 曲线
    • kCAEmitterLayerSphere 圆形

澳门金沙30064.com 6

CAEmitterCell :表示粒子

  • contents:粒子的从头到尾的经过
  • lifetime:存活时间
  • lifetimeRange:存活时间的限定
  • birthRate:每秒粒子生成的数量
  • emissionLatitude:散发的纬度(方向)——>弧度——>上下
  • emissionLongitude: 散发的经度(方向)——>弧度——>左右
  • velocity:发送的快慢——>速度越快越远
  • velocityRange:发送速度的限制
  • xAcceleration; X轴的增加速度度
  • yAcceleration;Y轴的加快度
  • zAcceleration;Z轴的加快度
  • smissionRange:散发的范围——>弧度——>范围
  • name :粒子的名字 ——>能够由此粒子的名字 找到粒子

CAGradientLayer.png

使用:

CAEmitterLayer 对象定义为属性 使用懒加载

-(CAEmitterLayer *)emitterLayer{
    if (_emitterLayer) {
        return _emitterLayer;
    }
    _emitterLayer = [[CAEmitterLayer alloc]init];
    [self.view.layer addSublayer:_emitterLayer];
    return _emitterLayer;
}

对self. emitterLayer 进行安装

- (void)viewDidLoad {
    [super viewDidLoad];

    self.emitterLayer.frame = CGRectMake(0 ,100,500,500);
    self.view.backgroundColor = [UIColor blackColor];
     //    设置粒子发送器 每秒钟发送的数量
    self.emitterLayer.birthRate = 1;
    //    self.emitterLayer.emitterPosition 中心点
    self.emitterLayer.position = CGPointMake(500,700);
    self.emitterLayer.emitterShape = kCAEmitterLayerCircle;
    //    设置粒子发送器的样式
    self.emitterLayer.renderMode = kCAEmitterLayerOldestLast;
    self.emitterLayer.emitterMode = kCAEmitterLayerSurface;
    NSMutableArray *array = [[NSMutableArray alloc]init];
    for (int i=0; i<3; 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;
    UIImageView *View = [[UIImageView alloc]initWithFrame:self.view.frame];
    View.center = CGPointMake(200,550);
    View.contentMode = UIViewContentModeScaleAspectFit;
    View.image = [UIImage imageNamed:@"花"];

    [self.view addSubview:View];
}
  • CAGradientLayer用来绘制渐变色,钦定多少个颜色值、渐变利落地点,就会在layer中绘制出渐变效果。

渐变图层

CAGradientLayer、

  • clolors:渐变颜色的数组——>id->CGColor
  • locations:颜色渐变的比例 数组
  • startPoint 颜色渐变的起头点
  • endPoint 颜色渐变的极限
  • 颜色会依赖设置的七个点去变通

创建渐变图层对象
  CAGradientLayer *layer = [CAGradientLayer layer];
  layer.frame = self.view.frame;
  //图层的透明度
  layer.opacity = 0.5;
  //设置图层颜色渐变的开始点
  layer.startPoint = CGPointMake(0, 0);
  //设置图层颜色渐变的结束点
  layer.endPoint = CGPointMake(1,1);
  //颜色渐变的百分比 数组
  layer.locations = @[@0.2,@0.6];
  //渐变颜色的数组 数组不接受的CGColor类型 强转成id类型的
  layer.colors = @[(id)[UIColor greenColor].CGColor,(id)[UIColor whiteColor].CGColor,(id)[UIColor cyanColor].CGColor,];
  [self.view.layer addSublayer:layer];
  ```



##复制图层

###CAReplicatorLayer
- CALayer 必须重写 layerClass 把原CALayer 修改成 CAReplicatorLayer

//必须重写layerClas 的办法

  • (Class)layerClass{

    return [CAReplicatorLayer class];
    }

***** 如果没有重写 layerClass 的方法 运行程序会崩溃 报错原因如下

‘NSInvalidArgumentException’, reason: ‘-[CALayer setInstanceCount:]:
unrecognized selector sent to instance 0x7f9f207a2040’

CanReplicatorView *view = [[CanReplicatorView alloc]
initWithFrame:CGRectMake(100, 100, 100, 100)];
[self.view addSubview:view];
UIImageView *imageView = [[UIImageView alloc]
initWithFrame:CGRectMake(0, 0, 100, 100)];
imageView.contentMode = UIViewContentModeScaleAspectFit;
imageView.image = [UIImage imageNamed:@”花瓣2″];
[view addSubview:imageView];
CAReplicatorLayer *layer = (CAReplicatorLayer *)view.layer;
// 未来实例化出来layer 的数目
layer.instanceCount = 2;
// 改动复制图层样式
layer.instanceTransform = CATransform3DMakeTranslation(40, 400,100);

// 添加渐变层
CAGradientLayer * shadow = [CAGradientLayer layer];
shadow.frame = imgV.bounds;
shadow.opacity = .4f;
[imgV.layer addSublayer:shadow];
// [imgV.layer insertSublayer:shadow atIndex:0];
// 设置渐变的方向
shadow.startPoint = CGPointMake(0, 0);
shadow.endPoint = CGPointMake(1, 1);
//  设置渐变的颜色
    shadow.colors = @[(__bridge id)[UIColor blueColor].CGColor,
                      (__bridge id)[UIColor redColor].CGColor,
                      (__bridge id)[UIColor greenColor].CGColor];
 // 设置渐变分割点
shadow.locations = @[@(0.15f), @0.5f, @0.85];
CAReplicatorLayer 复制图层

澳门金沙30064.com 7

Replicator.png

  • CAReplicatorLayer创造layer和sublayer的多少个别本,别本改动颜色、形状、反射率

ReplicatorView.m

#import "ReplicatorView.h"

@implementation ReplicatorView

// 必须重写,否则-[CALayer setInstanceCount:]: unrecognized selector sent to instance
+ (Class)layerClass {
    return [CAReplicatorLayer class];
}
- (instancetype)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.bounds];
        imageView.image = [UIImage imageNamed:@"GMJ"];
        [imageView setContentMode:UIViewContentModeScaleToFill];
        [self addSubview:imageView];
    }
    return self;
}
@end

运用

ReplicatorView *testV = [[ReplicatorView alloc] initWithFrame:CGRectMake(DDYSCREENW/4.0, DDYSCREENW/2.0+64, DDYSCREENW/2.0, DDYSCREENW/2.0)];
 [self.view addSubview:testV];

    CAReplicatorLayer *rlayer = (CAReplicatorLayer *)testV.layer;
    rlayer.instanceCount = 2;
    CATransform3D transform = CATransform3DMakeTranslation(0, testV.ddy_h+5, 0);
    transform = CATransform3DRotate(transform, M_PI, 1, 0, 0);
    transform = CATransform3DScale(transform, 1, 0.8, 1);
    rlayer.instanceTransform = transform;
    rlayer.instanceAlphaOffset = -0.1;
    rlayer.instanceRedOffset = -0.1;
    rlayer.instanceGreenOffset = -0.1;
    rlayer.instanceBlueOffset = -0.1;
CAEmitterLayer 粒子产生器

澳门金沙30064.com 8

Emitter.png

  • CAEmitterLayer用来贯彻基于Core
    Animation的粒子发生器系统,每种粒子都是二个CAEmitterCell的实例,粒子绘制在背景观与border之上。在质量中,能够钦赐Layer中的CAEmitterCell数组,每一种cell定义了协和的一组属性,如速度、粒子发生率、旋转、缩放或许内容等。各种粒子也都有二个emitterCells属性,能够做为一个粒子发生器来运作。Layer还足以安装产生器地方、产生器形状、发射单元的岗位等等。

  • emitterMode 发送的体制:

    • kCAEmitterLayerPoints //点(默认)
    • kCAEmitterLayerOutline//线
    • kCAEmitterLayerSurfack//面
    • kCAEmitterLayerVolume//团
  • renderMode 粒子渲染格局:

    • kCAEmitterLayerOldestFirst 最后的落地的粒子 在首先个
    • kCAEmitterLayerOldestLast 最后的诞生的粒子 在最终面
    • kCAEmitterLayerBackToFront 把后边的 放到上面
    • kCAEmitterLayerAdditive 叠加
  • emitterShape 发送形状的样式:

    • kCAEmitterLayerPoint 点
    • kCAEmitterLayerLine 线
    • kCAEmitterLayerRectangle 矩形
    • kCAEmitterLayerCuboid 立方体
    • kCAEmitterLayerCircle 曲线
    • kCAEmitterLayerSphere 圆形

    CAEmitterLayer *emitter = [CAEmitterLayer layer];
    emitter.frame = CGRectMake(0, 0, DDYSCREENW, DDYSCREENH);
    [self.view.layer addSublayer:emitter];
    emitter.emitterPosition = CGPointMake(DDYSCREENW/2.0, DDYSCREENH*5/6.0);
    // emitterMode 发送的样式,默认是点
    emitter.emitterMode = kCAEmitterLayerPoints;
    // renderMode 粒子渲染方式: 叠加增强
    emitter.renderMode = kCAEmitterLayerAdditive;
    // 每秒产生4个
    emitter.birthRate = 4;

    CAEmitterCell *rocket = [CAEmitterCell emitterCell];
    rocket.contents = (__bridge id)[UIImage imageWithColor:DDYRandomColor size:CGSizeMake(5, 5)].CGImage;
    // 经纬度,经度角:x-y轴平面上与x轴夹角,纬度角:x-z轴平面上与x轴夹角
    rocket.emissionLongitude = -M_PI / 2;
    rocket.emissionLatitude = 0;
    // 粒子存活时间:5秒后消失
    rocket.lifetime = 5.0;
    // birthRate:100/s,与CAEmitterLayer的birtuRate相乘,最终400/s
    rocket.birthRate = 100;
    // velcity指定了初速度
    rocket.velocity = 400;
    // velcityRange设置初速度在300到500之间浮动
    rocket.velocityRange = 100;
    // yAcceleration指定了沿y轴250的加速度,用于给粒子减速
    rocket.yAcceleration = 250;
    // emissionRange 围绕着y轴负方向,建立了一个圆锥形,粒子范围内打出
    rocket.emissionRange = M_PI / 4;
    // color设置了粒子的颜色,并设置了每个色值的浮动范围,用于生成所有颜色的烟火
    rocket.color = CGColorCreateCopy(DDYColor(255.0, 120.0, 120.0, 0.5).CGColor);
    rocket.redRange = 0.5;
    rocket.greenRange = 0.5;
    rocket.blueRange = 0.5;
    rocket.alphaSpeed = -0.2;
    // 设置了名称,以后可以再次引用它
    [rocket setName:@"rocket"];
    emitter.emitterCells = @[rocket];


/*
// 设置基本动画
        CABasicAnimation *ani =  [CABasicAnimation animationWithKeyPath:@"emitterCells.snow.birthRate"];
        ani.fromValue = @(20.0);
        ani.toValue   = @(0.0);
        ani.duration  = 12.f;
        // 设置结束时的值
        [snowEmitter setValue:[NSNumber numberWithFloat:0]  forKeyPath:@"emitterCells.snow.birthRate"];
        // 添加动画
        [snowEmitter addAnimation:ani forKey:nil];
*/
CAScrollLayer
  • CAScrollLayer提供了和UIScrollView的基本效能。只但是它是layer,只担负显示,不响应用户事件,也不提供滚动条
CATiledLayer
  • CATiledLayer提供异步加载图片各部分的效劳。layer的drawLayer:inContext:方法会在产出时回调,用来绘制对应部分的内容。能够透过Context的clip
    bounds和CTM(当前图形上下文的仿射调换,CGContextGetCTM方法)来判断是图表的哪部分以及大小
CATransformLayer
  • CATransformLayer用来创立3D的layer结构,并不是CALayer那样的扁平结构。和普通layer分化的地方有:

1、transform
layer只渲染sublayers,这一个从CALayer传承下来的性子不起功用,蕴涵:backgroundColor,
contents, border style properties, stroke style properties等。

2、2D图片的管理属性也不起功用,包含:filters, backgroundFilters,
compositingFilter, mask, masksToBounds以及阴影属性。

3、opacity属性会利用到种种sublayer,transform
layer并不作为叁个完好来贯彻半晶莹剔透效果。

4、在transform
layer上不可以调用hitTest:方法,因为它并不设有叁个2D的坐标空间来恒定所测量试验的点。

在transform
layer上设置sublayerTransform的m34值,定位一个透视点,sublayer上利用z轴地点转换的卡通,就足以看到3D效果。

  • 错误: -[CALayer setInstanceCount:]: unrecognized selector sent to
    instance
    消除: 必须重写复制的view的+ layerClass方法;

  • CAEmitterLayer/CAGradientLayer/CAReplicatorLayer

  • CAReplicatorLayer光彩夺目动画

  • Core
    Animation简介

  • CAReplicatorLayer

  • 澳门金沙30064.com ,关于CAShapeLayer的部分实用案例和技艺

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图