基础iOSiOS知识点详解

CALayer和UIView的解析

2015-11-12  本文已影响654人  iOS_成才录

一、CALayer和UIView的关系

  1. UIView显示在屏幕上归功于CALayer

2.UIView更像是一个CALayer的管理器

3.layer属性,layerClass方法

- (class) layerClass {
    // 使某个UIView的子类使用GL来进行绘制
    return ([CAEAGLLayer class]);
}

4.layer上添加子layer

grayCover = [[CALayer alloc]init];
grayCover.backgroudColor = [[UIColor blackColor]colorWithAlphaComponent:0.2].CGColor;
[self.layer addSubLayer:grayCover];

5.补充部分,UIView的layer树形在系统内部被系统维护着三份copy

1. 其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层(即CALayer对象)
2. 换句话说,UIView本身不具备显示的功能,是它内部的层才有显示功能

3.在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可以访问这个层

@property(nonatomic,readonly,retain)CALayer*layer; 

4. 当UIView需要显示到屏幕上时
   4.1 会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层layer属性上
   4.2 绘图完毕后,系统会将图层拷贝到屏幕上,于是就完成了UIView的显示

二、UIView和CALayer的选择

三、CALayer

1.拿到view对象的layer属性,我们能做什么?

CALayer是定义在Core Animation框架中

四、CALayer的基本属性

// 宽度和高度
@propertyCGRectbounds;

// 位置(默认指中点,具体由anchorPoint决定)
@propertyCGPointposition;

// 锚点(x,y的范围都是0-1),决定了position的含义
@propertyCGPointanchorPoint;

// 背景颜色(CGColorRef类型)
@propertyCGColorRefbackgroundColor;

// 形变属性
@propertyCATransform3Dtransform;

// 边框颜色(CGColorRef类型)
@propertyCGColorRefborderColor;

// 边框宽度
@propertyCGFloatborderWidth;

// 圆角半径
@propertyCGColorRefborderColor;

// 内容(比如设置为图片CGImageRef)
@property(retain)idcontents;
上一篇下一篇

猜你喜欢

热点阅读