博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ios晋级之路-CALayer以及动画CABaseAnimation
阅读量:5052 次
发布时间:2019-06-12

本文共 1889 字,大约阅读时间需要 6 分钟。

CALayer

近期真的是很忙,好久没写新东西了,最近看了一下CALayer 。
CALayer类型管理着基于图像的内容并且允许在内容上执行动画,图层通常习惯于为uiview提供图像显示,但是其也可以不依赖于uiview去显示,一个图层的主要工作是去管理你所提供的可见内容但是图层自己也有一些可以被设置的属性,例如背景色,阴影,边界。除了管理可见内容之外,图层还维持着一些关于几何学的内容(例如位置,size和transform)。调节layer的性能就是如何去初始化在调整图层内容和几何结构上的动画,一个layer对象将持续和动画封装在 
 协议中,
shadowColor//阴影颜色
shadowOpacity//阴影透明度
shadowOffSet//阴影的偏移量
 
anchorPoint和position的区别
和uiview不同layer由三个属性来设置位置
boundS — 设置大小
anchorPoint锚点(锚点对后续layer动画有很大的影响)
position 锚点在superLayer中的位置
archorPoint(x,y)的两个值默认是(0.5,0.5)
而position则是anchorPoint在superLayer中的位置
layer显示图片
layer.contents = (id)[UIImage imageNamed:@].CGImage;
imageLayer.contentsGravity = kCAGravityResizeAspect;
看一下contentGravity,这个属性决定了contents如何填充
 
 
 
绘制Layer的三种方式
。把一个图像对象直接复制给contents属性
。设置delegate,让代理绘制layer的内容
。继承CALayer,重写绘制方法,来提供layer内容
 
当需要动态改变内容的时候可以使用代理
。displayLayer如果实现了这个代理,那么绘制一个bitmap,然后复制给contents是U型
 
Layer Tree分为三种,model Layer Tree,Presentation Tree ,Render Tree
model Layer Tree :存储的是模态对象,也就是我们通常处理的对象,比如layer.position = CGPointMake
Presentation Tree:存储的是正在执行的动画当前状态,是一个动态的树,由这个树来获取当前动画运动到哪
 
 
有两种方式来影响动画 
CABasicAnimation * animation = [CABasicAnimation animation];
animation.keyPath = @“position.x”;//以KVC方式来访问属性
animation.fromValue = @()//属性的开始值
animation.toValue = @()//属性结束的值
animation.duration = 1;//持续时间
animation.timingFunction = [CAMediaTimingFunction FunctionWithName:kCAMediaTimingFunctionEaseInEaseOut
]//结束函数
[self.View.layer addAnamation:animation forKey:@“basic”]//添加动画
 
fromValue toValue是一种方式,方然也可以用另外一种byValue的方式,这种方式在初始值的基础上加上byValue的值
 
讲解一下时间函数 时间函数决定了动画如何执行,时间函数决定了动画的数学模型,比如加速度最好不要突变
有五种
CAMediaTimingFunctionLinear;线性
CAMediaTimingFunctionEaseIn;加速进入
CAMediaTimingFunctionEaseOut;减速停止
CAMediaTimingFunctionEaseInEaseOut;加速进入减速停止
CAMediaTimingFunctionDefault;默认
当然时间函数支持自定义
如下函数FunctionWithControlPoints
这个函数的四个点决定了一个三维贝塞尔曲线来决定时间函数。
在传递CAAnimation的对象或者子类给Layer的时候,传递的是copy

 

转载于:https://www.cnblogs.com/fanxinguu/p/5066608.html

你可能感兴趣的文章
Spring Boot使用Druid和监控配置
查看>>
poi 处理空单元格
查看>>
Android 内存泄漏优化总结
查看>>
luogu4849 寻找宝藏 (cdq分治+dp)
查看>>
Spring Cloud微服务笔记(五)Feign
查看>>
C语言键盘按键列表
查看>>
Codeforces Round #374 (Div. 2)
查看>>
oracle数据类型
查看>>
socket
查看>>
Vue中使用key的作用
查看>>
二叉索引树 树状数组
查看>>
日志框架--(一)基础篇
查看>>
Java设计模式之原型模式
查看>>
Spring学习(四)-----Spring Bean引用同xml和不同xml bean的例子
查看>>
哲理故事与管理之道(20)-用危机激励下属
查看>>
关于源程序到可运行程序的过程
查看>>
wepy的使用
查看>>
转载:mysql数据库密码忘记找回方法
查看>>
scratch少儿编程第一季——06、人在江湖混,没有背景怎么行。
查看>>
面向对象1
查看>>