Core Animation(核心动画),是从Layer Kit(图层工具包)演变而来的,不仅仅可以用来做动画。

1、视图

一个视图就是屏幕上显示的一个矩形,例如文字、图片和视频。

视图是UIView(NSView)或者其子类,它可以响应鼠标点击和触摸手势等用户操作,可以支持基于Core Graphics绘图,可以做仿射变换,可以做滑动和渐变等动画。

视图可以互相嵌套,形成层级关系树,一个视图可以管理它的子视图。

2、图层

图层就是各种layer,其中最常用的是CALayer。CALayer也是个矩形,可以设置背景色和图片等。同样会形成层级关系树,管理子图层,也可以做变换和动画。不过,CALayer不响应用户的操作。

3、视图和图层的关系

UIView是CALayer的封装。每一个UIView都包含一个CALayer属性,即backing layer(背衬层)。

@property (nullable, strong) CALayer *layer;

视图和图层的层级关系是平行的,真正能在屏幕上显示和做动画的是图层。

4、图层的简单使用

// 创建子图层
CALayer *blueLayer = [CALayer layer];
blueLayer.frame = CGRectMake(50.0f, 50.0f, 100.0f, 100.0f);
blueLayer.backgroundColor = [UIColor blueColor].CGColor;
// 把子图层加到视图的图层中
[self.view.layer addSublayer:blueLayer];

5、寄宿图

顾名思义,即寄宿在图层中的图。CALayer有个contents属性

/* An object providing the contents of the layer, typically a CGImageRef,
* but may be something else. (For example, NSImage objects are
* supported on Mac OS X 10.6 and later.) Default value is nil.
* Animatable. */ @property(nullable, strong) id contents;

6、自定义绘图

给contents属性赋值不是设置寄宿图的唯一方法,可以通过继承UIView并重写drawRect方法,使用Core Graphics直接绘制寄宿图。

对于UIView,寄宿图不是必须的。但是如果UIView检测到drawRect方法被调用了,就会为视图分配一个寄宿图,这个寄宿图的像素尺寸等于视图大小乘以contentsScale。

https://bihongbo.com/2016/01/03/memoryGhostdrawRect/

If you subclass UIView directly, your implementation of this method does not need to call super.
- (void)drawRect:(NSRect)dirtyRect {
[super drawRect:dirtyRect]; // Drawing code here.
}

14、图像IO

加载,解码,渲染

图片缓存

离屏渲染

参考链接:

https://zsisme.gitbooks.io/ios-/

Objective-C Core Animation深入理解的更多相关文章

  1. Swift: 深入理解Core Animation(一)

    如果想在底层做一些改变,想实现一些特别的动画,这时除了学习Core Animation之外,别无选择. 最近在看<iOS Core Animation:Advanced Techniques&g ...

  2. 老司机带你走进Core Animation

    为什么时隔这么久我又回来了呢? 回来圈粉. 开玩笑的,前段时间ipv6被拒啊,超级悲剧的,前后弄了好久,然后需求啊什么的又超多,所以写好的东西也没有时间整理.不过既然我现在回来了,那么这将是一个井喷的 ...

  3. IOS Core Animation Advanced Techniques的学习笔记(五)

    第六章:Specialized Layers   类别 用途 CAEmitterLayer 用于实现基于Core Animation粒子发射系统.发射器层对象控制粒子的生成和起源 CAGradient ...

  4. iOS——Core Animation 知识摘抄(一)

    本文是对http://www.cocoachina.com/ios/20150104/10814.html文章的关键段落的摘抄,有需要的看原文 CALayer和UIView的关系: CALayer类在 ...

  5. core animation (转)

    iOS Core Animation 简明系列教程 看到无数的CA教程,都非常的难懂,各种事务各种图层关系看的人头大.自己就想用通俗的语言翻译给大家听,尽可能准确表达,如果哪里有问题,请您指出我会尽快 ...

  6. 转 iOS Core Animation 动画 入门学习(一)基础

    iOS Core Animation 动画 入门学习(一)基础 reference:https://developer.apple.com/library/ios/documentation/Coco ...

  7. Core Animation编程指南

    本文是<Core Animation Programming Guide>2013-01-28更新版本的译文.本文略去了原文中关于OS X平台上Core Animation相关内容.因为原 ...

  8. Core Animation之框架简介(一)

    Core Animation之框架简介(一) 作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/11180241 转载请注明 ...

  9. Core Animation之多种动画效果

    前面介绍了Core Animation基础知识,还有CALayer的简单使用,最终还是有要动画的滴,这里列出几个动画效果,参考下能加深对Core Animation的认识和理解 1.把图片移到右下角变 ...

随机推荐

  1. [转*译]Networking API Improvements in Windows 10

        在当今,以云优先,移动优先技术为宗旨的时代下,大多数Apps都至少有一些与web服务或网络上其他设备的集成.这些包括应用程序,它获取天气在线内容,新闻或体育比赛的分数,媒体或下载的播客,甚至对 ...

  2. javascript之揭示模式

    一.该模式优缺点1.优点:该模式可以使脚本语法更加一致,在模块代码底部,它很容易指出哪些函数和变量可以被公开访问,从而改善可读性. 2.缺点:如果一个私有函数引用一个公有函数,公有函数是不能被覆盖的. ...

  3. jQuery性能优化的一些参考建议

    JQ3.1 文档下载地址:https://pan.baidu.com/s/1c2vMQdy 一.注意定义jQuery变量的时候添加var关键字 这个不仅仅是JQ,在JS中都是必须的 二.如果有多个变量 ...

  4. Ajax实现的城市二级联动三

    把之前2篇整合在一起 1.html <select id="province"> <option>请选择</option> </selec ...

  5. Oracle总结二

    1 where子句 Where子句的作用:用where子句来指定查询条件 1.1 用法示例 select * from emp where deptno=10; select * from emp w ...

  6. Harbor api 操作

    harbor 的版本为 1.5.2 为 Harbor 配置 swagger 官网参考: https://github.com/goharbor/harbor/blob/v1.5.2/docs/conf ...

  7. git命令详解( 八)

    此为记录git的第八篇,前七篇为远程篇,工作中最常用的都在前七篇,因为要在远程分支上合作开发     在提交树上移动 撤销变更 在提交树上移动 在接触 Git 更高级功能之前,我们有必要先学习在你项目 ...

  8. GridView的簡單使用

    項目GitHub地址:https://github.com/leonInShanghai/IMbobo GridView XML佈局: <?xml version="1.0" ...

  9. [20170927]关于hugepages.txt

    [20170927]关于hugepages.txt --//今天测试hugepages与内核参数nr_overcommit_hugepages,才发现HugePages_Surp表示什么? --// ...

  10. mysqlreport工具

    进行MySQL的配置优化,首先必须找出MySQL的性能瓶颈所在:而SHOW STATUS输出的报告正是用来计算性能瓶颈的参考数据.mysqlreport不像SHOW STATUS那样简单的罗列数据,而 ...