iOS:CALayer的隐式动画的详解
[CATransaction begin];
[CATransaction setDisableActions:YES];
// ...一些其他的代码<#code#>
[CATransaction commit];
具体的演示实例如下:只需要在控制器ViewController类中写代码即可.......
操作目的:当我们触摸屏幕时,子层会动画跑到点击的位置停留下来,同时动画的过程中,它的透明度和形变也可以发生改变。
操作步骤:
1.创建子层,设置属性,然后添加到根层
- (void)viewDidLoad {
[super viewDidLoad]; //创建子层并设置属性(使用了默认的锚点)
self.subLayer = [[CALayer alloc]init];
self.subLayer.bounds = CGRectMake(, , , );
self.subLayer.position = CGPointMake(, );
self.subLayer.backgroundColor = [[UIColor redColor]CGColor]; //将子层添加到根层
[self.view.layer addSublayer:self.subLayer];
}
2.重写-(void)touchBegan:(NSSet*)touches withEvent:(UIEvent *)event方法,进行触摸事件的处理,动画过程中处理的代码如下:
//取出当前点
//取出当前点
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView:self.view];
//开始动画事物([CATransaction setDisableActions:YES]关闭隐式动画后,子层直接跳到了触击位置,没有了移动动画流程)
//动画事物开始
[CATransaction begin]; //关闭隐式动画
//[CATransaction setDisableActions:YES];
//设置动画持续时间为1秒
[CATransaction setAnimationDuration:1.0];
//设置子层的动画后的位置
//设置子层的位置为当前点坐标
self.subLayer.position = location; //CGRect frame = self.subLayer.frame;
/*
虽然CALayer可以使用frame,但最好还是使用bounds和position。为层设置动画时,用bounds和position会方便一点
*/
//self.subLayer.frame = CGRectMake(location.x, location.y, frame.size.width, frame.size.height);
//设置子层透明度的变化值,透明度由1.0变成了0.5
//设置透明度
self.subLayer.opacity = 0.5;
//设置子层变形,以x为旋转轴旋转45度
//将子层以x轴为轴旋转45度
self.subLayer.transform = CATransform3DMakeRotation(M_PI_4, , , );
//提交动画事物
//动画事物提交
[CATransaction commit];
3.演示结果如下:
没有任何触发时的截图: 在屏幕右下角点击一下,子层慢慢移动了此位置,并且透明度慢慢变浅,形变产生
iOS:CALayer的隐式动画的详解的更多相关文章
- Scala 深入浅出实战经典 第62讲:Scala中上下文界定内幕中的隐式参数实战详解
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载: 百度云盘:http://pan.baidu.com/s/1c0noOt ...
- CALayer的隐式动画
CALayer的使用 在我的理解中CALayer就是iOS中利用图层精简非交互式绘图.那么那些核心动画类.也就是变化图层的非交互式绘制规则而已.其中的本质就是将CALayer中的内容转化为map图.从 ...
- CALayer的隐式动画和显式动画
隐式事务 任何对于CALayer属性的修改,都是隐式事务,都会有动画效果.这样的事务会在run-loop中被提交. - (void)viewDidLoad { //初始化一个layer,添加到主视图 ...
- iOS中的隐式动画
隐式动画就是指 在 非 人为在代码中 定义动画 而系统却默认 自带 的动画 叫做隐式动画. 比如 改变 图层 的颜色 位置 和 透明度 的时候 都会 产生附带的渐变的 ...
- Scala之隐式转换implicit详解
假设我们有一个表示文本的行数的类LineNumber: class LineNumber ( val num : Int ) 我们可以用这个类来表示一本书中每一页的行数: val lineNumOfP ...
- [iOS Animation]-CALayer 隐式动画
隐式动画 按照我的意思去做,而不是我说的. -- 埃德娜,辛普森 我们在第一部分讨论了Core Animation除了动画之外可以做到的任何事情.但是动画是Core Animation库一个非常显著的 ...
- iOS边练边学--CALayer,非根层隐式动画,钟表练习
一.CALayer UIView之所以能显示在屏幕上,完全是因为他内部的一个图层 在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性 ...
- IOS第18天(3,CALayer隐式动画)
******隐式动画(手指拖拽Layer) #import "HMViewController.h" @interface HMViewController () @propert ...
- iOS动画学习 -隐式动画
事务 Core Animation基于一个假设,说屏幕上的任何东西都可以(或者可能)做动画.你并不需要在Core Animation中手动打开动画,但是你需要明确地关闭它,否则它会一直存在. 当你改变 ...
随机推荐
- VBS基础篇 - 内置函数
Date/Time 函数 函数 描述 CDate 把有效的日期和时间表达式转换为日期(Date)类型. Date 返回当前的系统日期. DateAdd 返回已添加指定时间间隔的日期. DateDiff ...
- 20145103《java程序设计》第4周学习总结
20145103 <Java程序设计>第4周学习总结 教材学习内容总结 继承 继承共同行为 ·继承基本上就是避免多个类间重复定义共同行为. ·继承的三个好处:减少代码冗余:维护变得简单:扩 ...
- 20145120《Java程序设计》课程总结
20145120<Java程序设计>课程总结 每周读书笔记链接汇总 寒假学习总结 第1周学习总结 第2周学习总结 第3周学习总结 第4周学习总结 第5周学习总结 第6周学习总结 第7周学习 ...
- “我爱淘”冲刺阶段Scrum站立会议2
完成任务: 已经将菜单栏和首页精选页面整合在一起了,现在正在做第二个界面--分类. 计划任务: 将分类页面制作完毕,并可以整合到整体里,可以进行菜单点击的切换. 遇到问题: 1.分类页面布局的制作不好 ...
- 使用SecureRandom类替代Random类
java.util.Random 产生确定的值可能被恶意的程序预测到. java.security.SecureRandom 产生不确定的随机数不能被预测到. 所以优先使用java.security. ...
- 《JavaScript高级程序设计》第4章 变量、作用域和内存问题
4.1 基本类型和引用类型 5种基本类型:Undefined.Null.Boolean.Number和String,这5种基本类型是按值访问的,因为可以操作保存在变量中的实际的值. 引用类型:可能由多 ...
- UVA 10078 The Art Gallery
Problem: Century Arts has hundreds of art galleries scattered all around the country and you are hir ...
- 【BZOJ】【2661】【Beijing WC2012】连连看
网络流/费用流/二分图最大权匹配 拆点费用流求最大权匹配……为什么我拿zyf和Hzwer的代码也交不过去……WA了那么多次……so sad 求路过的神牛指导啊>_<万分感谢 //BZOJ ...
- Hdu 1429 胜利大逃亡(续) 分类: Brush Mode 2014-08-07 17:01 92人阅读 评论(0) 收藏
胜利大逃亡(续) Time Limit : 4000/2000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Subm ...
- Matlab命令系列之目录操作
Matlab命令系列之目录操作 filesep 用于返回当前平台的目录分隔符,Windows是反斜杠(),Linux是斜杠(/).有时此命令结合ispc命令使用,可以灵活的设置目录分割符. fullf ...