Objective-C Core Animation深入理解
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深入理解的更多相关文章
- Swift: 深入理解Core Animation(一)
如果想在底层做一些改变,想实现一些特别的动画,这时除了学习Core Animation之外,别无选择. 最近在看<iOS Core Animation:Advanced Techniques&g ...
- 老司机带你走进Core Animation
为什么时隔这么久我又回来了呢? 回来圈粉. 开玩笑的,前段时间ipv6被拒啊,超级悲剧的,前后弄了好久,然后需求啊什么的又超多,所以写好的东西也没有时间整理.不过既然我现在回来了,那么这将是一个井喷的 ...
- IOS Core Animation Advanced Techniques的学习笔记(五)
第六章:Specialized Layers 类别 用途 CAEmitterLayer 用于实现基于Core Animation粒子发射系统.发射器层对象控制粒子的生成和起源 CAGradient ...
- iOS——Core Animation 知识摘抄(一)
本文是对http://www.cocoachina.com/ios/20150104/10814.html文章的关键段落的摘抄,有需要的看原文 CALayer和UIView的关系: CALayer类在 ...
- core animation (转)
iOS Core Animation 简明系列教程 看到无数的CA教程,都非常的难懂,各种事务各种图层关系看的人头大.自己就想用通俗的语言翻译给大家听,尽可能准确表达,如果哪里有问题,请您指出我会尽快 ...
- 转 iOS Core Animation 动画 入门学习(一)基础
iOS Core Animation 动画 入门学习(一)基础 reference:https://developer.apple.com/library/ios/documentation/Coco ...
- Core Animation编程指南
本文是<Core Animation Programming Guide>2013-01-28更新版本的译文.本文略去了原文中关于OS X平台上Core Animation相关内容.因为原 ...
- Core Animation之框架简介(一)
Core Animation之框架简介(一) 作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/11180241 转载请注明 ...
- Core Animation之多种动画效果
前面介绍了Core Animation基础知识,还有CALayer的简单使用,最终还是有要动画的滴,这里列出几个动画效果,参考下能加深对Core Animation的认识和理解 1.把图片移到右下角变 ...
随机推荐
- Kite(几何+镜面对称)
C. Kite Time Limit: 1000ms Case Time Limit: 1000ms Memory Limit: 65536KB Vova bought a kite co ...
- sublime text3快速生成html头部信息
1.在网站开发过程中尤其写前台页面时要写头部很麻烦,怎么办呢?直接生成不更好吗? 这是快速生成的信息 2.方法: ctrl+shift+P打开命令面板 点击安装控制器 3.输入emmet 安装(以下图 ...
- Python 3.4:Chromedrive,IEDriverServer,geckoDriver
import sys; import time; import os; #from huoche import PythonTickt; from splinter.browser import Br ...
- React-classnames库
今天在项目中看到了大佬引入了classnames,之前没用过所以去搜了搜,感觉还真的是挺好用的,搜到一篇很不错的文章,跟原创作者交流了一下就转载过来了! 下面废话不多说,我们直接来看文章吧 首先我们我 ...
- Linux 学习笔记之超详细基础linux命令 Part 13
Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 12---------------- ...
- 编写xml文件不当时会出现R文件找不到情况
1,先检查xml文件是否报错,报错的话直接找到报错行. 2,xml文件若不报错,可能是文本值得格式输入错误 比如android:text=“<0.5km”,此时的小于号就会引发错误,导致R文件找 ...
- 什么是DDoS攻击?DDoS防御的11种方针详解
对于遭受DDOS攻击的情况是让人很尴尬的,如果我们有良好的DDoS防御方法,那么很多问题就将迎刃而解,我们来看看我们有哪些常用的有效地方法来做好DDoS防御呢. 对于DDoS防御的理解: 对付DDOS ...
- Ubuntu18.04 安装mysql8.0.11
1.下载deb包 2.运行命令 sudo dpkg -i mysql-apt-config_0.8.10-1_all.deb sudo apt update 3.安装mysql8 sudo apt i ...
- sql server全文索引使用中的小坑 (转载)
一.业务场景 我们在实际生产环境中遇到了这样一种需求,即需要检索一个父子关系的子树数据 估计大家也遇到过类似的场景,最典型的就是省市数据,其中path字段是按层级关系生成的行政区路径: 如果我们已知某 ...
- 反射的作用—>实现框架的功能
框架与框架要解决的核心问题 我们做房子卖给用户住,用于用户自己安装门窗和空调,我做的房子就是框架,用户需要使用我的框架,把门窗插入进我提供的框架中.框架与工具类有区别,工具类被用户的类调用,而框架则是 ...