图层的使用要点(CALayer)
A,图层和路径
基本图层 CALayer 动画的主角
形状图层 CAShapeLayer 绘制不规则图形
渐变图层 CAGradientLayer 颜色渐变、阴影
复制图层 CAReplicatorLayer 迭代复制同一个图层
基础动画 CABasicAnimation 位移、透明度、缩放、旋转
关键帧 CAKeyframeAnimation 路径、抖动、关键帧
组合动画 CAAnimationGroup 多个动画的结合
系统封装动画 CATransition 淡入淡出、推挤、解开、覆盖
放射变幻 CGAffineTransform 旋转缩放

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 渐变颜色的数组,注意这几个数字在0到1之间单调递增。
@property CGPoint startPoint映射locations中第一个位置,用单位向量表示,比如(0,0)表示从左上角开始变化。默认值是(0.5,0.0)。
@property CGPoint endPoint映射locations中最后一个位置,用单位向量表示,比如(1,1)表示到右下角变化结束。默认值是(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;
图层的使用要点(CALayer)的更多相关文章
- [iOS Animation]-CALayer 图层几何学
图层几何学 不熟悉几何学的人就不要来这里了 --柏拉图学院入口的签名 在第二章里面,我们介绍了图层背后的图片,和一些控制图层坐标和旋转的属性.在这一章中,我们将要看一看图层内部是如何根据父图层和兄弟图 ...
- [iOS Animation]-CALayer 图层树
图层的树状结构 巨妖有图层,洋葱也有图层,你有吗?我们都有图层 -- 史莱克 Core Animation其实是一个令人误解的命名.你可能认为它只是用来做动画的,但实际上它是从一个叫做Layer Ki ...
- CALayer 2 详解 -----转自李明杰
CALayer2-创建新的层 本文目录 一.添加一个简单的图层 二.添加一个显示图片的图层 三.为什么CALayer中使用CGColorRef和CGImageRef这2种数据类型,而不用UICol ...
- CALayer精讲
前言 CALayer包含在QuartzCore框架中,这是一个跨平台的框架,既可以用在iOS中又可以用在Mac OS X中.后面要学Core Animation就应该先学好Layer(层). 我们看一 ...
- CALayer -- 备忘
CALayer layer是层,每个view上都会最少有一个layer,view上的可视化内容其实都是层. CALayer展示实例 let customView = UIView(frame: CGR ...
- iOS Core Animation学习总结(1)--CALayer常用属性
图层是core animation的基础, UIView之所以能显示在屏幕上,靠的是其内部的这个图层,即每个UIView 都有 CALayer,可通过UIView.layer或者[UIView lay ...
- CoreAnimation1-图层树、寄宿图以及图层几何学
(一)图层的树状结构 Core Animation其实是一个令人误解的命名.你可能认为它只是用来做动画的,但实际上它是从一个叫做Layer Kit这么一个不怎么和动画有关的名字演变而来,所以做动画这只 ...
- [iOS Animation]-CALayer 变换
变换 很不幸,没人能告诉你母体是什么,你只能自己体会 -- 骇客帝国 在第四章“可视效果”中,我们研究了一些增强图层和它的内容显示效果的一些技术,在这一章中,我们将要研究可以用来对图层旋转,摆放或者扭 ...
- [iOS Animation]-CALayer 显示方式
寄宿图 图片胜过千言万语,界面抵得上千图片 ——Ben Shneiderman 我们在第一章『图层树』中介绍了CALayer类并创建了一个简单的有蓝色背景的图层.背景颜色还好啦,但是如果它仅仅是展现了 ...
随机推荐
- 自动化测试的组成部分:SEARCH
在考虑自动化测试用例时,不仅仅要考虑测试的执行步骤.在运行任何步骤之前,程序必须处在能够执行测试的状态.在测试执行后,至关重要的是知道测试是否通过,并且测试结果一定要被保存到某处以待检查或进一步分析. ...
- SQLMap用户手册二
http://192.168.136.131/sqlmap/mysql/get_int.php?id=1 当给sqlmap这么一个url的时候,它会: 1.判断可注入的参数 2.判断可以用那种SQ ...
- HDU4081 Qin Shi Huang's National Road System【prim最小生成树+枚举】
先求出最小生成树,然后枚举树上的边,对于每条边"分别"找出这条割边形成的两个块中点权最大的两个 1.因为结果是A/B.A的变化会引起B的变化,两个制约.无法直接贪心出最大的A/B. ...
- 编程之美 set 8 区间重合判断
Leetcode 上有连续的两道题, 一个是 insert interval, 一个是 merge interval, 其中 insert interval 是 merge interval. 其中 ...
- sqlserver 安全
1.将数据库的用户名和密码加密保存,使用加密传输.2.将数据库里面的用户除了这个用户所有的用户都禁用,把该用户的密码改的很复杂,很难破解那种3.设置数据库的可连接方式(所有的方式的设置).4.删除数据 ...
- ArcGIS ArcMap 与 ArcServer关于Python的冲突
一.问题描述 1.ArcMap 是32位,运行的Python也是32位: 2.ArcGIS Server 是64位,运行的Python是64位: 3.这样就导致注册表和环境变量起冲突,即如果Serve ...
- 《C++ Primer Plus》第5章 循环和关系表达式 学习笔记
C++提供了3种循环: for 循环. while 循环 和 do while 循环 .如果循环测试条件为 true 或非零,则循环将重复执行一组指令: 如果测试条件为 false 或 0 , 则结束 ...
- 在 Linux 上管理加密密钥的最佳体验
导读 存储 SSH 的加密秘钥和记住密码一直是一个让人头疼的问题.但是不幸的是,在当前这个充满了恶意黑客和攻击的世界中,基本的安全预防是必不可少的.对于许多普通用户来说,大多数人只能是记住密码,也可能 ...
- phpredis 中文手册和redis 教程
phpredis 中文手册 : http://www.cnblogs.com/zcy_soft/archive/2012/09/21/2697006.html 手册: http://www.cn ...
- Imageview如何设置背景颜色
ImageView.setBackgroundColor(android.graphics.Color.parseColor("#ffffff")); ImageView.setB ...