什么是CALayer
CALayer是UIView里的一个图层,其主要功能是负责显示视图与动画。CALayer和UIView 功能是一致的、 不过因为其 更加底层 所以 CALayer 有一些接口、 UIView 里面没有。
CALayer与UIView
UIView:用于管理视图的容器。每次创建UIView对象时,UIView对象就会在内部创建一个层(CALayer),通过这个层实现显示功能。
CALayer:实际用于显示的层,但是它不具备事件响应能力。
CALayer具有更好的性能,资源消耗少,如果我们只做显示功能可以考虑使用CALayer及其子类来优化性能。
CALayer的使用
1. 使用UIView的layer属性,设置特殊效果。
例:
- (void) initView {
UIView* view = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
view.backgroundColor = [UIColor redColor];
// layer边框宽度
view.layer.borderWidth = 10;
// layer边框颜色(这是CGColor)
view.layer.borderColor = [UIColor blueColor].CGColor;
// layer的圆角半径大小
view.layer.cornerRadius = 20;
// 设置阴影颜色(CGColor)
view.layer.shadowColor = [UIColor grayColor].CGColor;
// 设置阴影偏移量,正数在左,负数在右
view.layer.shadowOffset = CGSizeMake(10, 10);
// 设置阴影的显示程度
view.layer.shadowOpacity = 0.3;
// 剪切掉多余部分,但是如果设置了阴影,阴影也会被剪切。
// view.layer.masksToBounds = YES;
[self.view addSubview:view];
}
效果展示:
2. 使用CALayer单独显示内容。
这里介绍下CALayer的position属性和anchorPoint属性。
position属性是指定位点的位置,类似center。
anchorPoint属性决定CAlayer上的哪一个点会成为定位点。它以原点为(0, 0),其(x, y)取值都是0~1。
anchorPoint定位点的计算方法是比例计算,比如默认值(0.5, 0.5),意思就是从原点出发,这个点的位置在x总长的一半,y总长的一半,即中心点。而position属性指的就是这个点在父图层上的位置。
简单使用CALayer显示一个红色的图层
代码:
- (void) initCALayer {
CALayer* layer = [CALayer layer];
// 跟这里也是CGColor
layer.backgroundColor = [UIColor redColor].CGColor;
// 设置宽✖️高
layer.bounds = CGRectMake(0, 0, 100, 100);
// 设置位置
layer.position = CGPointMake(100, 100);
// 设置锚点
layer.anchorPoint = CGPointMake(0, 0);
[self.view.layer addSublayer:layer];
}
效果图: