图层的使用要点(CALayer)

A,图层和路径

基本图层 CALayer 动画的主角

形状图层 CAShapeLayer 绘制不规则图形

渐变图层 CAGradientLayer 颜色渐变、阴影

复制图层 CAReplicatorLayer 迭代复制同一个图层

基础动画 CABasicAnimation 位移、透明度、缩放、旋转

关键帧 CAKeyframeAnimation 路径、抖动、关键帧

组合动画 CAAnimationGroup 多个动画的结合

系统封装动画 CATransition 淡入淡出、推挤、解开、覆盖

放射变幻 CGAffineTransform 旋转缩放

图层的使用要点(CALayer)

CAAnimation

CAAnimation可分为四种:

1. CABasicAnimation 基本动画

通过设定起始点,终点,时间,动画会沿着你这设定点进行移动。可以看做特殊的CAKeyFrameAnimation

创建cabaseanimation 的方法,但是在最新的apple开发文档没有查到path到底有哪些,网上搜罗了一下,并猜测path跟layer中的属性字段是一致的如background

2. CAKeyframeAnimation 关键帧动画

Keyframe顾名思义就是关键点的frame,你可以通过设定CALayer的始点、中间关键点、终点的frame,时间,动画会沿你设定的轨迹进行移动 CAKeyframeAnimation 的一些比较重要的属性

2.1. path

这是一个 CGPathRef 对象,默认是空的,当我们创建好CAKeyframeAnimation的实例的时候,可以通过制定一个自己定义的path来让某一个物体按照这个路径进行动画。这个值默认是nil,当其被设定的时候values 这个属性就被覆盖。

2.2. values

一个数组,提供了一组关键帧的值,当使用path的 时候 values的值自动被忽略。

3. CAAnimationGroup 组合动画

  • Group也就是组合的意思,可以保存一组动画对象,将CAAnimationGroup对象加入图层后,组中所有动画对象可以同时并发运行
  • animations属性:用来保存一组动画对象的NSArray
  • 注意:默认情况下,一组动画对象是同时运行的,也 可以通过设置动画对象的beginTime属性来更改动画的开始时间,从而达到同步动画或是连续动画效果

4. CATransition 系统封装的过渡动画

UIViewAnimationTransition 声明过渡方向

UIViewAnimationTransitionFlipFromLeft 向左转动

UIViewAnimationTransitionFlipFromRight 向右转动

UIViewAnimationTransitionCurlUp 向上翻动

UIViewAnimationTransitionCurlDown 向下翻动

名称 CATransition.type过渡效果

kCATransitionFade //淡入淡出 (不支持过渡方向)

kCATransitionPush, //推挤

kCATransitionReveal //揭开

kCATransitionMoveIn //覆盖

Cube //立方体

SuckEffect //吮吸

OglFlip //翻转

rippleEffect //波纹

pageCurl //翻页

pageUnCurl //反翻页

cameraIrisHollowOpen //开镜头 相机镜头打开效果(不支持过渡方向)

cameraIrisHollowClose //关镜头 相机镜头打开效果(不支持过渡方向)

CAShapeLayer 太极圈

继承自CALayer,因此,可使用CALayer的所有属性。但是,CAShapeLayer需要和贝塞尔曲线配合使用才有意义。

关于UIBezierPath

path:表示路径,可以用贝塞尔曲线,也可以自定义路径

fillcolor:表示填充色

strokeColor:线条颜色

linewidth:线的宽度

strokeStart:stroke的起始点(0~1)

strokeEnd:stroke的结束点(0~1)

CAGradientLayer 隐身术,渐变术

继承calayer,主要用于处理颜色渐变的图层。主要有以下的Properties

@property(copy) NSArray colors   渐变颜色的数组,注意这几个数字在01之间单调递增。
@property CGPoint startPoint
映射locations中第一个位置,用单位向量表示,比如(00)表示从左上角开始变化。默认值是(0.5,0.0)。
@property CGPoint endPoint
映射locations中最后一个位置,用单位向量表示,比如(11)表示到右下角变化结束。默认值是(0.5,1.0)。
@property
(copy) NSString type 默认值是kCAGradientLayerAxial,表示按像素均匀变化。除了默认值也无其它选项。

CAReplicatorLayer 分身术

复制器图层(观音送给孙悟空的三根毫毛,吹一下就变成无数的猴子猴孙)

CAReplicatorLayer是一个容器层

复制自己子层的layer,并且复制的出来的layer和原来的子layer拥有相同的动效。然后通过设置一些属性,可以设置其偏移位置让其依次排列,也可以设置不同的触发时间这样就形成了动画的效果常用于做loading动画

名称   功能

instanceCount 要创建的副本个数(默认一个)

preservesDepth 是否将3D例子系统平面化到一个图层(默认NO)

instanceDelay 动画时间延迟。默认为0

instanceTransform 迭代图层的位置 CATransform3D对象(创建方法用:CATransform3DMakeRotation圆形排列,CATransform3DMakeTranslation水平排列)

instanceColor 颜色组件添加到实例k - 1产生的颜色实例的调制颜色k。清晰的颜色(默认不透明白色)

instanceRedOffset,instanceGreenOffset,instanceBlueOffset,instanceAlphaOffset 加到实例K-1的颜色的颜色分量,以产生实例k的调制颜色。默认为鲜明的色彩(无变化)。

B,view.layer 与view.layer.mask的区别

1)view.layer是只读的,因此不能直接通过等号赋值,而是通过addSublayer添加上去。view.layer.mask是通过等号执行赋值的

2)addSublayer:盖上去的图层(遮住就看不到下面的内容)

mask:设置为 mask (遮住什么,下面的内容就显示出什么)view.layer.mask = layer

3)一个view之所以能让用户看到里面的内容,是因为默认情况下,mask 的frame是等于view的frame,并且mask 是有背景颜色,即背景颜色不等于[UIColor clearColor].CGColor;

因此需要看到view的内容需要满足两个前提要求:首先mask要有frame值,然后mask的背景颜色不为[UIColor clearColor].CGColor;

上一篇:Hibernate配置


下一篇:linux:磁盘的分割、检验、格式化与挂载