1、Core Animation是跨平台的,支持IOS和Mac OS X环境

2、核心动画操作的对象不是UIView而是CALayer,CALayer是核心动画的基础,

可以做圆角、阴影、边框等效果

3、每个UIView内部都有一个Layer的属性

4、在实现核心动画时,本质上是将CALayer中得内容转换成位图,从而便于图形硬件的操纵。

5、因为Core Animation是跨平台的,基于QuartzCore框架,在Core Animation中不能使用任何

跟UI相关的方法。[view.layer setShadowColor:[UIColor blueColor].CGColor];,之所以要用CGColor进行转换,因为UIkit框架

,仅能用于IOS平台

6、在UIImageView中,图层不止一个,如果要实现圆角效果,需啊哟设置一个遮罩属性,

masksToBounds属性可以让imageView中所有子图层跟随imageView一起变化

7、在UIImageView中,如果设置了MasksToBounds属性,imageView的阴影效果无效

8、形变参数使用set方法时,只能应用一种形变

9、利用keypath设置形变
    //平移
    [imgView.layer setValue:@-100 forKeyPath:@"transform.translation.y"];
    //缩放
    [imgView.layer setValue:@1.0 forKeyPath:@"transform.scale"];
    //旋转
    [imgView.layer setValue:@M_PI_2 forKeyPath:@"transform.rotation.z"];

10、图层和视图之间的关系

  创建视图对象时,视图会自己创建一个层,视图在绘图(如drawRect:)时,会将内容画在自己的层上,

当视图在蹭上完成绘图后,系统会将图层拷贝至屏幕,每个视图都有一个层,而每个图层又可以有多个子层

11、Layer的设计目的不是为了取代视图,因此不能基于CALayer创建一个独立的可视化组件。

12、layer的设计目的是提供视图的基本可视内容,从而提高动画执行效率

13、layer除了提供可视内容外,layer不负责视图的时间响应、内容绘制等工作,同时layer不能参与到响应链中

14、

15、获取当前图层或使用静态方法layer初始化CALayer后,可以设置一下属性

16、锚点:主要控制图层的位置以及旋转的轴(0-1,0-1)

锚点中x,y分别对应图层尺寸的比例,从0 - 100%的定位点

通过比例,锚点不需要知道图层具体的大小

定位时,通过锚点寻找position,同时移动图层

利用锚点移动图层时,不需要知道图层的大小,只需要知道比例就行了

旋转、缩放、平移都是针对锚点的

17、在关节动画中可以移动锚点,保证不会肢体分离

18、每一个UIView内部默认关联一个CALayer,称这个layer为root layer

所有的非root layer 都存在着隐式动画,隐式动画的默认市场为1/4秒。

19、layer就是用来看的,并不能交互

20、

21、要在CALayer上绘图,有两种方式:

  1、创建一个CALayer的子类,然互覆盖drawInContext:方法

,可以使用Quartz2D API在其中进行绘图

  2、设置CALayer的delegate,然后让delegate视线drawLayer:inContext方法进行绘图

注:

  1、不能再将UIView设置为这个CALayer的delegate,因为UIView对象已经是内部层的delegate

再次设置会出现问题

  2、无论使用哪种方法,都必须向层发送setNeedsDisplay消息,以触发响应绘图方法的调用

22、不能将视图设置为layer的代理delegate

23、

  

CALayer笔记的更多相关文章

  1. 【好程序员笔记分享】——UIView与CALayer详解

    -iOS培训,iOS学习-------型技术博客.期待与您交流!------------ UIView与CALayer详解 研究Core Animation已经有段时间了,关于Core Animati ...

  2. 12.22笔记(关于CALayer//Attributes//CALayer绘制图层//CALayer代理绘图//CALayer动画属性//CALayer自定义子图层//绘图pdf文件//绘图渐变效果)

    12.22笔记 pdf下载文件:https://www.evernote.com/shard/s227/sh/f81ba498-41aa-443b-81c1-9b569fcc34c5/f033b89a ...

  3. <极客学院>视频教程学习笔记-iOS中CALayer的使用

    <1>CALayer简介 1.CALayer一般作为UIView的容器而使用. 2.CALayer是一个管理者图片载体(image-based content)的层结构 3.直接修改单独创 ...

  4. IOS Core Animation Advanced Techniques的学习笔记(一)

    转载. Book Description Publication Date: August 12, 2013 Core Animation is the technology underlying A ...

  5. CoreAnimation笔记

    核心动画继承结构 CoreAnimation Core Animation是直接作用在CALayer上的(并非UIView上)非常强大的跨Mac OS X和iOS平台的动画处理API,Core Ani ...

  6. UIView CALayer 的区别

    UIView与CALayer的区别,很详细 研究Core Animation已经有段时间了,关于Core Animation,网上没什么好的介绍.苹果网站上有篇专门的总结性介绍,但是似乎原理性的东西不 ...

  7. UIView与CALayer的区别,很详细

    研 究Core Animation已经有段时间了,关于Core Animation,网上没什么好的介绍.苹果网站上有篇专门的总结性介绍,但是似乎原理性的东西不多,看得人云山雾罩,感觉,写那篇东西的人, ...

  8. object - c 语言基础 进阶笔记 随笔笔记

    重点知识Engadget(瘾科技)StackOverFlow(栈溢出)Code4Apprespon魏先宇的程序人生第一周快捷键: Alt+上方向键 跳到最上面  Alt+下方向键 跳到最下面      ...

  9. iPhone与iPad开发实战读书笔记

    iPhone开发一些读书笔记 手机应用分类1.教育工具2.生活工具3.社交应用4.定位工具5.游戏6.报纸和杂志的阅读器7.移动办公应用8.财经工具9.手机购物应用10.风景区相关应用11.旅游相关的 ...

随机推荐

  1. 转:OSGi 入门篇:模块层

    OSGi 入门篇:模块层 1 什么是模块化 模块层是OSGi框架中最基础的一部分,其中Java的模块化特性在这一层得到了很好的实现.但是这种实现与Java本身现有的一些模块化特性又有明显的不同. 本文 ...

  2. C# 拆箱与装箱 要严格控制,数量多起来严重影响效率

    int i = 5; object o = i; int j = (int)o; IComparer x = 5; 1. o的对象必须为一个引用,而数字5不是,则发生了装箱: 运行时将在堆上创建一个包 ...

  3. 我的Time

    C++改本地时间 #include<iostream> #include<windows.h> using namespace std; void main() { //tim ...

  4. Windows下 Maven 使用 阿里云镜像配置

    新建或者修改文件: C:\Users\user\.m2\settings.xml <settings xmlns="http://maven.apache.org/SETTINGS/1 ...

  5. CSS3图片倒影技术实现及原理

    CSS3图片倒影技术实现及原理 目前为止我们已经探讨了很多CSS3中的新功能和新特征.除了上面这些,实际上还有很多CSS新属性并未包含进CSS3官方标准中,像谷歌浏览器或火狐浏览器等都会利用CSS的浏 ...

  6. ActiveReports中如何控制页面的记录数

    在 ActiveReports 中,可以固定报表每页显示的行数,当每页的数据不足固定的行数时,自动通过填补空白行来实现,当然这两种功能仅限于区域报表和页面报表中. 区域报表 在区域报表中,有很多方法来 ...

  7. [HTML/HTML5]4 使用文本

    4.1  组织文本 在已经采用结构化方式将页面划分为多个关键内容区域(content area)并添加相应的标题之后,就可以进一步对这些内容区域中的文本进行组织. 4.1.1  段落 p元素的具体功能 ...

  8. Orchard中codegen相关命令

    Orchard开放了命令行功能,用于在快速创建代码. 由于该功能默认没有开启.系统中提供两种开启方式: 1.进入管理后台->Modules->找到[Code Generation]-> ...

  9. F2工作流引擎之-纯JS Web在线可拖拽的流程设计器(八)

          Web纯JS流程设计器无需编程,完全是通过鼠标拖.拉.拽的方式来完成,支持串行.并行.分支.异或分支.M取N路分支.会签.聚合.多重聚合.退回.传阅.转交,都可以非常方便快捷地实现,管理员 ...

  10. PDF 补丁丁 0.5.0.2273 测试版发布:修复崩溃问题,可自定义工具栏文本

    新的测试版修复了编辑器在打开文件后再打开文件会崩溃的严重错误,以及一些小问题. 在一些小细节上作了调整,例如可自定义常用工具栏的文本等等. 由于之前测试版本的错误比较严重,推荐网友下载新的测试版.