CALayer的隐式动画属性:
•每一个UIView内部都默认关联着一个CALayer,称这个Layer为Root Layer。所有的非Root Layer都存在着隐式动画,隐式动画的默认时长为1/4秒。
•当修改非Root Layer的部分属性时,相应的修改会自动产生动画效果,能执行隐式动画的属性被称为“可动画属性”,诸如:
1.bounds: 缩放动画
2.position: 平移动画
3.opacity: 淡入淡出动画(改变透明度)
•在文档中搜素animatable可以找到所有可动画属性
•如果要关闭默认的动画效果,可以通过动画事务方法实现:

[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的隐式动画的详解的更多相关文章

  1. Scala 深入浅出实战经典 第62讲:Scala中上下文界定内幕中的隐式参数实战详解

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载: 百度云盘:http://pan.baidu.com/s/1c0noOt ...

  2. CALayer的隐式动画

    CALayer的使用 在我的理解中CALayer就是iOS中利用图层精简非交互式绘图.那么那些核心动画类.也就是变化图层的非交互式绘制规则而已.其中的本质就是将CALayer中的内容转化为map图.从 ...

  3. CALayer的隐式动画和显式动画

    隐式事务 任何对于CALayer属性的修改,都是隐式事务,都会有动画效果.这样的事务会在run-loop中被提交. - (void)viewDidLoad { //初始化一个layer,添加到主视图 ...

  4. iOS中的隐式动画

    隐式动画就是指  在 非 人为在代码中 定义动画  而系统却默认  自带   的动画  叫做隐式动画. 比如  改变 图层  的颜色  位置  和   透明度  的时候    都会  产生附带的渐变的 ...

  5. Scala之隐式转换implicit详解

    假设我们有一个表示文本的行数的类LineNumber: class LineNumber ( val num : Int ) 我们可以用这个类来表示一本书中每一页的行数: val lineNumOfP ...

  6. [iOS Animation]-CALayer 隐式动画

    隐式动画 按照我的意思去做,而不是我说的. -- 埃德娜,辛普森 我们在第一部分讨论了Core Animation除了动画之外可以做到的任何事情.但是动画是Core Animation库一个非常显著的 ...

  7. iOS边练边学--CALayer,非根层隐式动画,钟表练习

    一.CALayer UIView之所以能显示在屏幕上,完全是因为他内部的一个图层 在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性 ...

  8. IOS第18天(3,CALayer隐式动画)

    ******隐式动画(手指拖拽Layer) #import "HMViewController.h" @interface HMViewController () @propert ...

  9. iOS动画学习 -隐式动画

    事务 Core Animation基于一个假设,说屏幕上的任何东西都可以(或者可能)做动画.你并不需要在Core Animation中手动打开动画,但是你需要明确地关闭它,否则它会一直存在. 当你改变 ...

随机推荐

  1. Convert Sorted Array to Binary Search Tree

    Convert Sorted Array to Binary Search Tree Given an array where elements are sorted in ascending ord ...

  2. 查mysql字段中的数字记录

    select * from a where nameregexp '^[0-9]+$' ;

  3. Window VNC远程控制LINUX:VNC详细配置介绍

    Window VNC远程控制LINUX:VNC详细配置介绍 //---------------------------------------vnc linux下的详细配置 1.VNC的启动/停止/重 ...

  4. 本人在安装ADT Bundle for windows的各种问题总结

    本人在安装ADT Bundle for windows的各种问题总结 1.解决国内访问Google服务器的困难: 1.启动 Android SDK Manager : 2.打开主界面,依次选择「Too ...

  5. Tomcat性能参数设置

    Tomcat性能参数设置 Tomcat性能参数设置 博客分类: Java LinuxTomcat网络应用多线程Socket 默认参数不适合生产环境使用,因此需要修改一些参数 1.修改启动时内存参数.并 ...

  6. 使用Java 8 Lambda表达式对Employee类进行操作

    1,首先定义Employee类. package coffee.how.to.program.early.objects.chapter15; public class Employee { priv ...

  7. 重新认识Box Model、IFC、BFC和Collapsing margins

    尊重原创,转载自: http://www.cnblogs.com/fsjohnhuang/p/5259121.html 肥子John^_^ 前言   盒子模型作为CSS基础中的基础,曾一度以为掌握了I ...

  8. 转载—“Cache-control”常见的取值有private、no-cache、max-age、must-revalidate等

    转载自http://www.cnblogs.com/igin/archive/2008/05/04/1181056.html 网页的缓存是由HTTP消息头中的“Cache-control”来控制的,常 ...

  9. gvim编辑文件到github乱码

    with below _vimrc settings, code uploaded to GitHub will display with proper encoding set encoding=u ...

  10. log4j.xml配置文件

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration S ...