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 开篇的更多相关文章

  1. CoreAnimation 目录

    CoreAnimation 目录 CoreAnimation 开篇 CoreAnimation 寄宿图 CoreAnimation 图层几何学 CoreAnimation 视觉效果

  2. 16 (OC)* UIAnimation和CoreAnimation

    目录 一 Core Animation 二 核心动画 2.1 基础动画 2.2 关键帧动画 2.3 动画组 2.4 转场动画 2.5 逐帧动画 三 UIView动画封装 3.1 基础动画 3.2 弹簧 ...

  3. 一年之计在于春,2015开篇:PDF.NET SOD Ver 5.1完全开源

    前言: 自从我2014年下半年到现在的某电商公司工作后,工作太忙,一直没有写过一篇博客,甚至连14年股票市场的牛市都错过了,现在马上要过年了,而今天又是立春节气,如果再不动手,那么明年这个无春的年,也 ...

  4. ASP.NET Web API 开篇示例介绍

    ASP.NET Web API 开篇示例介绍 ASP.NET Web API 对于我这个初学者来说ASP.NET Web API这个框架很陌生又熟悉着. 陌生的是ASP.NET Web API是一个全 ...

  5. Entity Framework入门系列(1)-扯淡开篇

    这是我在Cnblogs上的第一个系列,但愿能坚持下去: 惯例索引 Entity Framework入门系列(1)-开篇兼索引: Entity Framework入门系列(2)-初试Code First ...

  6. iOS CoreAnimation详解(一) 有关Layer的动画

    以前由于项目需要 也写了一些动画 ,但是知识不系统,很散.这段时间趁着项目完成的空袭,来跟着大神的脚步系统的总结一下iOS中Core Animation的知识点. 原博客地址:http://blog. ...

  7. Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引

    因为内容比较多,所以每篇讲解一些内容,最后会放出全部代码,可以参考.操作中总会遇到各式各样的问题,个人对部分问题的研究在最后一篇 问题研究 里.欢迎大家探讨学习. 代码都经过个人测试,但仍可能有各种未 ...

  8. web自动化工具-开篇

    web自动化工具-开篇 最近几年,前端技术风一样的速度迭代更新,各种框架工具雨后春笋般涌现,作为一个平凡的开发者,也只能在洪流中沉沉浮浮,微不足道,以前前端叫做切图仔.美工,如今改了称号叫前端工程师, ...

  9. [翻译svg教程]svg学习系列 开篇

    目录 [翻译svg教程]svg学习系列 开篇 [翻译svg教程 ]svg 的坐标系统 [翻译svg教程]svg 中的g元素 [翻译svg教程]svg中矩形元素 rect [翻译svg教程]svg中的c ...

随机推荐

  1. UGUI batch 规则和性能优化

    UGUI batch 规则和性能优化 (基础) Unity 绘图性能优化 - Draw Call Batching : http://docs.unity3d.com/Manual/DrawCallB ...

  2. 关于ExtJS必输框,多选项

    必填项: //页面内传值用ID,和后台联系用name <div class="col-xs-4">                     <div class= ...

  3. Flash中图片的逐步加载

    在Flash中,有Loader类,可以从外部载入一张图片(或swf文件).但是有个不好的地方就是,不像浏览器那样一边下载一边显示.所幸的是,Flash提供了Loader.loadBytes方法和URL ...

  4. PHP扩展之多线程

    PHP一直以为不支持多线程,后面才知道有基于pThread的扩展包,地址如下: http://php.net/manual/zh/book.pthreads.php 我感兴趣的是以下几个点: 1.Th ...

  5. 让EFCore更疯狂些的扩展类库(一):通过json文件配置sql语句

    前言 EF通过linq和各种扩展方法,再加上实体模型,编写数据库的访问代码确实是优美.舒服,但是生成的sql不尽如意.性能低下,尤其是复杂些的逻辑关系,最终大家还是会回归自然,选择能够友好执行sql语 ...

  6. SDWebImage源码解读之分类

    第十一篇 前言 我们知道SDWebImageManager是用来管理图片下载的,但我们平时的开发更多的是使用UIImageView和UIButton这两个控件显示图片. 按照正常的想法,我们只需要在他 ...

  7. JTable 的使用

    JTable是Swing编程中的一种控件. 一.创建表格控件的各种方式:1) 调用无参构造函数. JTable table = new JTable(); 2) 以表头和表数据创建表格. Object ...

  8. 在Window下安装Oracle

    一.Oracle下载地址 http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 二.解压 ...

  9. JAVA_file(1)

    1.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:C:xyz est.txt 代表了test.txt文件的绝对路径.http://www.s ...

  10. 微信jsSDK公众号开发时网页提示 invalid signature错误的解决方法

    微信公众号开发jsSDK,链接地址不能加?参数,可以通过#传递参数. 不然.页面wx.ready()时就会报错,用 wx.error(function (res) { alert("接口验证 ...