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中手动打开动画,但是你需要明确地关闭它,否则它会一直存在. 当你改变 ...
随机推荐
- SVN补充
为什么使用SVN? 1.需求1:备份,以防电脑死机断电等 2.需求2:代码还原,代码不管你改成什么样都可以找到某一段的版本 3.需求3:协同修改,下载修改同一个文件,防止被相互覆盖 4.需求4:多版本 ...
- WordPress使用SQLite全新安装
首先按照http://blog.csdn.net/guilyn/article/details/13170673的第1.2部操作. 1: 程序下载. NGinX 服务器: http://nginx.o ...
- HTML 表格生成
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 【BZOJ】【3205】【APIO2013】机器人robot
斯坦纳树 好神啊……Orz zyf && PoPoQQQ 为啥跟斯坦纳树扯上关系了?我想是因为每个点(robot)都沿着树边汇到根的时候就全部合起来了吧= =这个好像和裸的斯坦纳树不太 ...
- discuzx完全自定义设计模板门户首页,栏目,专题模板方法
第一种:门户首页模板(index.htm,保存于templatedefaultportal) <!--{subtemplate common/header}--> <style id ...
- 15万甚至30万以内的SUV值不值得买?
大家好,这个帖子比较长,也是我一直以来长期实践.思考.验证的结论,不当之处还请指正,也欢迎大家来共 同讨论,已经买了此价位SUV的战友们,看完后也不要生气,毕竟我的出发点是注重行车安全,人非神明,是个 ...
- [工作积累] Android dynamic library & JNI_OnLoad
Bionic libc doesn't load dependencies for current .so file (diff from Windows or Linux) so a explici ...
- 如何做到尽可能不使用庞大的jQuery
jQuery 是现在最流行的 JavaScript 工具库. 据统计,目前全世界 57.3% 的网站使用它.也就是说,10 个网站里面,有 6 个使用 jQuery.如果只考察使用工具库的网站,这个比 ...
- Wamp Mysql错误消息 语言设置
Wamp Mysql错误消息 语言设置 http://my.oschina.net/wandershi/blog/264347 打开my.ini 找到 [wampmysqld] port = 33 ...
- C++默认参数(转)
函数的默认参数值,即在定义参数的时候同时给它一个初始值.在调用函数的时候,我们可以省略含有默认值的参数.也就是说,如果用户指定了参数值,则使用用户指定的值,否则使用默认参数的值. void Func( ...