iOS Core Animation笔记--UIView和CALayer

来源:互联网 发布:软件测试转正工作总结 编辑:程序博客网 时间:2024/05/20 23:57

UIView

iOS中所有的视图均是从UIVIew派生的,UIVIew可以处理触摸事件、支持Core Graphics绘图、可以做仿射变换(例如旋转、缩放)、也可以做一些滑动或渐变的动画

CALayer

CALayer类似UIVIew,也还一些被层级关系树管理的块,CALayer(图层)可以包含图片、文字等内容,可以管理自己的子图层,也有一些方法和属性用来做动画和变换。

但是和UIView不同的是,CALayer不能响应事件,它不清楚响应链,即使它有一些判断点是否在自己的范围内,

UIView和CALayer

UIView的层级关系对应着一个平行的CALayer层级关系,每一个UIView有关联这一个CALayer的实例,视图的职责就是创建和管理这个图层(当子视图添加或删除的时候,他们关联的图层在对应的层级关系树中也会有相应的操作)以及处理触摸事件等,CALayer才是真正的用来做屏幕上的显示和动画,UIView仅是对它的封装,提供一些接口然我们可以简单的设置该视图对应的图层

之所以不用一个层级处理所有的事是为了职责分离

图层可以做的功能
(1)阴影、圆角、带颜色的边框
(2)3D变换
(3)非矩形的范围
(4)透明遮罩
(5)非线性的动画

使用CALayer的例子

下面的例子可一说明两点
(1)说明视图View的原点在左上角,而CALayer图层的原点在view的左上角,个人认为原因是将blueLayer添加到view中
(2)一个视图只有一个关联的图层(自动创建的),但是可以给它添加无数个图层,其实添加的图层是添加到关联的图层的图层树中

    UIView *view = [[UIView alloc]initWithFrame:CGRectMake(self.view.frame.size.width/2-100, self.view.frame.size.height/2-100, 200, 200)];    view.backgroundColor = [UIColor whiteColor];    [self.view addSubview:view];   //view中添加红色view    UIView *view1 = [[UIView alloc]initWithFrame:CGRectMake(self.view.frame.size.width/2-50, self.view.frame.size.height/2-50, 100, 100)];    view1.backgroundColor = [UIColor redColor];    [self.view addSubview:view1];       //view中添加蓝色Layer    CALayer *blueLayer = [CALayer layer];    //CGRectMake(0, 0, 100, 100)对应第一个图,    // blueLayer.frame = CGRectMake(0, 0, 100, 100);    //对应第二个图    blueLayer.frame = CGRectMake(0, 20, 100, 100);    blueLayer.backgroundColor = [UIColor blueColor].CGColor;    [view.layer addSublayer:blueLayer];

这里写图片描述

0 0
原创粉丝点击