CoreAnimation 开篇

CoreAnimation 开篇


    CoreAnimation 目录html

    CoreAnimation系列博客是我对学习CoreAnimation的知识整理,博客排列顺序以及知识讲解存在欠缺望见谅.api

    博客的编写是在工做之余,尽可能保证CoreAnimation系列博客在6月初所有编写完成,感兴趣的同窗能够关注一下.学习

    为了保证学习CoreAnimation的质量我会在每一个篇幅结束后附上GitHub地址以供查看源码.动画

CoreAnimation简介

    CoreAnimation将其翻译为中文则是"核心动画"(Core:核心,Animation:动画).然而若是单纯的只是介绍动画我想我不会用大规模的篇幅去梳理其概念,api,以及代码实现.atom

     CoreAnimation中的动画只是其一小部分, CoreAnimation其实是一个复合引擎,它的功能是以其最快的速度组合屏幕上不一样的可视内容,这个内容是被分解成独立的图层,存储在一个叫作图层树的体系之中.这个树即是咱们在iOS程序上所能看到视图的基础.翻译

图层树

视图与图层

    所谓的视图就是咱们错看到的内容,它可以拦截相似于鼠标点击或者触摸手势等操做,视图在层级关系中能够互相嵌套,一个视图能够管理它的全部子视图的位置.图层则是视图之间的层级关系,下面两张图就分别是视图与图层.3d

视图        图层

    所在iOS当中,全部的视图都从一个叫作UIVIew的基类派生而来,UIView能够处理触摸事件,能够支持基于Core Graphics绘图,能够作仿射变换(例如旋转或者缩放),或者简单的相似于滑动或者渐变的动画.code

CALayer

    CALayer与UIView的区别和联系我写过一篇博客.
    CALayer与UIView的区别和联系htm

平行的层级关系

    每一个UIView上都会存在一个CALayer,而实质行UIView的职责也就是控制和管理图层(CALayer),而且响应事件.真正的图形展现以及动画处理都是CALayer去作的.所以UIView是在CALayer上的封装以及添加了响应事件的功能.blog

图层的能力

    在某种意义上说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];
}
相关文章
相关标签/搜索