CoreAnimation 开篇
CoreAnimation 开篇
CoreAnimation系列博客是我对学习CoreAnimation的知识整理,博客排列顺序以及知识讲解存在欠缺望见谅.
博客的编写是在工作之余,尽量保证CoreAnimation系列博客在6月初全部编写完成,感兴趣的同学可以关注一下.
为了保证学习CoreAnimation的质量我会在每个篇幅结束后附上GitHub地址以供查看源码.
CoreAnimation简介
CoreAnimation将其翻译为中文则是"核心动画"(Core:核心,Animation:动画).然而如果单纯的只是介绍动画我想我不会用大规模的篇幅去梳理其概念,api,以及代码实现.
CoreAnimation中的动画只是其一小部分, CoreAnimation实际上是一个复合引擎,它的功能是以其最快的速度组合屏幕上不同的可视内容,这个内容是被分解成独立的图层,存储在一个叫做图层树的体系之中.这个树便是我们在iOS程序上所能看到视图的基础.
图层树
视图与图层
所谓的视图就是我们错看到的内容,它能够拦截类似于鼠标点击或者触摸手势等操作,视图在层级关系中可以互相嵌套,一个视图可以管理它的所有子视图的位置.图层则是视图之间的层级关系,下面两张图就分别是视图与图层.

所在iOS当中,所有的视图都从一个叫做UIVIew的基类派生而来,UIView可以处理触摸事件,可以支持基于Core Graphics绘图,可以做仿射变换(例如旋转或者缩放),或者简单的类似于滑动或者渐变的动画.
CALayer
CALayer与UIView的区别和联系我写过一篇博客.
CALayer与UIView的区别和联系
平行的层级关系
每个UIView上都会存在一个CALayer,而实质行UIView的职责也就是控制和管理图层(CALayer),并且响应事件.真正的图形展示以及动画处理都是CALayer去做的.因此UIView是在CALayer上的封装以及添加了响应事件的功能.
图层的能力
在某种意义上说UIView既然是对CALayer的封装,那么我们使用UIView就好了,而且对于一些简单的需求来说,我们确实没必要处理CALayer,因为苹果已经通过UIView的高级API间接地使得动画和视图的展现变得很简单.
但是这种简单会不可避免地带来一些灵活上的缺陷.如果你略微想在底层做一些改变,或者使用一些苹果没有在UIView上实现的接口功能,这时除了介入CoreAnimation底层之外别无选择.
例如下面的功能,我们只能选择CALayer去实现.
- 阴影,圆角,带颜色的边框
- 3D变换
- 非矩形范围
- 透明遮罩
- 多级非线性动画
- 等等
使用图层
下面让我们真正的去使用图层.
- 圆角,带颜色的边框

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIView *centerView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.centerView.layer.cornerRadius = 10;// 设置图层的圆角半径
self.centerView.layer.borderWidth = 2;// 设置图层的边框宽度
self.centerView.layer.borderColor = [UIColor greenColor].CGColor;// 设置图层的边框颜色
self.centerView.layer.masksToBounds = YES;//暂不理会
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
CoreAnimation 开篇的更多相关文章
- CoreAnimation 目录
CoreAnimation 目录 CoreAnimation 开篇 CoreAnimation 寄宿图 CoreAnimation 图层几何学 CoreAnimation 视觉效果
- 16 (OC)* UIAnimation和CoreAnimation
目录 一 Core Animation 二 核心动画 2.1 基础动画 2.2 关键帧动画 2.3 动画组 2.4 转场动画 2.5 逐帧动画 三 UIView动画封装 3.1 基础动画 3.2 弹簧 ...
- 一年之计在于春,2015开篇:PDF.NET SOD Ver 5.1完全开源
前言: 自从我2014年下半年到现在的某电商公司工作后,工作太忙,一直没有写过一篇博客,甚至连14年股票市场的牛市都错过了,现在马上要过年了,而今天又是立春节气,如果再不动手,那么明年这个无春的年,也 ...
- ASP.NET Web API 开篇示例介绍
ASP.NET Web API 开篇示例介绍 ASP.NET Web API 对于我这个初学者来说ASP.NET Web API这个框架很陌生又熟悉着. 陌生的是ASP.NET Web API是一个全 ...
- Entity Framework入门系列(1)-扯淡开篇
这是我在Cnblogs上的第一个系列,但愿能坚持下去: 惯例索引 Entity Framework入门系列(1)-开篇兼索引: Entity Framework入门系列(2)-初试Code First ...
- iOS CoreAnimation详解(一) 有关Layer的动画
以前由于项目需要 也写了一些动画 ,但是知识不系统,很散.这段时间趁着项目完成的空袭,来跟着大神的脚步系统的总结一下iOS中Core Animation的知识点. 原博客地址:http://blog. ...
- Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引
因为内容比较多,所以每篇讲解一些内容,最后会放出全部代码,可以参考.操作中总会遇到各式各样的问题,个人对部分问题的研究在最后一篇 问题研究 里.欢迎大家探讨学习. 代码都经过个人测试,但仍可能有各种未 ...
- web自动化工具-开篇
web自动化工具-开篇 最近几年,前端技术风一样的速度迭代更新,各种框架工具雨后春笋般涌现,作为一个平凡的开发者,也只能在洪流中沉沉浮浮,微不足道,以前前端叫做切图仔.美工,如今改了称号叫前端工程师, ...
- [翻译svg教程]svg学习系列 开篇
目录 [翻译svg教程]svg学习系列 开篇 [翻译svg教程 ]svg 的坐标系统 [翻译svg教程]svg 中的g元素 [翻译svg教程]svg中矩形元素 rect [翻译svg教程]svg中的c ...
随机推荐
- 拖动条(SeekBar)的功能和用法
拖动条和进度条非常相似,只是进度条采用颜色填充来表明进度完成的程序,而拖动条则通过滑块的位置来标识数值——而且拖动条允许用户拖动滑块来改变值,因而拖动条通常用于对系统的某种数值进行调节,比如调节音量等 ...
- oracle 查询哪些表分区
如果查询当前用户下得分区表:select * from user_tables where partitioned='YES'如果要查询整个数据库中的分区表:select * from dba_tab ...
- Gdb远程调试Linux内核遇到的Bug
知识共享许可协议本作品采用知识共享署名 4.0 国际许可协议进行许可.转载保留声明头部与原文链接https://luzeshu.com/blog/gdb-bug 本博客同步在http://www.cn ...
- [译]如何定义python源文件的文件编码
简介 这篇文章是为了介绍定义python源文件文件编码的方法.python解释器可以根据所指定的编码信息对当前文件进行解析.通常来说,这种方法可以提高解析器对Unicode编码的源文件的识别,并且支持 ...
- Codeforces374A
A. Inna and Pink Pony time limit per test1 second memory limit per test 256 megabytes input standard ...
- HDU5914
Triangle Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Su ...
- WinForm 控件(上)
窗体的事件 每一个窗体都有一个事件,这个窗体加载完成之后执行哪一段代码 位置:1)右键属性→事件→load 双击进入 2)双击窗体任意一个位置进入 删除事件:先将事件页面里面的挂好的事件删除,再删后台 ...
- VS Code C# 插件离线版 1.6.2
VS Code C# 插件离线版,目前最新稳定版为:1.6.2 . 由于在扩展中下载C#插件总是缓慢,或者容易出现错误,特制作离线版本共享出来. 本离线版本为Windows版本,其他系统请在扩展中下载 ...
- Spark RDD编程核心
一句话说,在Spark中对数据的操作其实就是对RDD的操作,而对RDD的操作不外乎创建.转换.调用求值. 什么是RDD RDD(Resilient Distributed Dataset),弹性分布式 ...
- php单例模式与工厂模式
单例模式:单例模式又称为职责模式,它用来在程序中创建一个单一功能的访问点,通俗地说就是实例化出来的对象是唯一的. 所有的单例模式至少拥有以下三种公共元素:1. 它们必须拥有一个构造函数,并且必须被标记 ...