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中手动打开动画,但是你需要明确地关闭它,否则它会一直存在. 当你改变 ...
随机推荐
- cacti install on ubuntu
安装cacti需要的软件需要 nginx + php + mysql + rrdtool + cacti + snmp 1.nginx 安装配置 首先按照如下命令安装,明显是马虎不细心./config ...
- 【Permutations II】cpp
题目: Given a collection of numbers that might contain duplicates, return all possible unique permutat ...
- footer居底
结构部分: <div class="container"> <div class="header">header</div> ...
- sql语句not in判断条件注意事项
sql语句not in判断条件注意事项 问题描述:mysql数据库,存在两个表org表和kdorg表,用于存储组织信息.现在我需要从org表找出组织,条件为该组织不在kdorg表里. sql语句:se ...
- c++ swap 函数
转载地址 1,最通用的模板交换函数模式:创建临时对象,调用对象的赋值操作符. template <class T> void swap ( T& a, T& b ) { T ...
- C#读书笔记之并行任务
这两天遇到一个多线程任务优化的问题,现在解决了,把心得用例子的形式记下来. 假设有四个任务: 任务1:登陆验证(CheckUser) 任务2:验证成功后从Web服务获取数据(GetDataFromWe ...
- 【BZOJ】【2324】【ZJOI2011】拯救皮卡丘
网络流/费用流+Floyed Orz zyf 题解: 这题和星际竞速还有打印机两题的主体思路都是一样的 每个点一定要经过,并且要经过这个点,必须经过比这个点小的所有点.而且还存在一个附加源,但源到附加 ...
- spring framework项目源码github托管地址
方法一:直接下载,github托管地址:http://repo.spring.io/simple/libs-release-local/org/springframework/spring/ 方法二: ...
- [转载]115个Java面试题和答案
不知道大家有没有这样的体会,就是找工作的时候不得不准备大量面试题,而工作的时间长了面试题里的精髓却忘的差不多了... 转载几篇Java面试的bolg,温故而知新,最重要的是常来看看. 1. http: ...
- 6 高级IO函数
6.1 pipe函数 pipe函数创建一个管道,用于实现进程间通信 #include<unistd.h> ]); 参数包含两个文件描述符fd[0]和fd[1],往fd[1]写入的数据可以从 ...