Core Animation里面的CALayer已经被说烂了,这里就不加赘述了。
需要说明两点:
1.Layer跟UIView之间的关系可以这么理解,只有root layer才是真正跟view打交道的,一个view并不代表一个layer;
2.layer的坐标系统,anchorPoint这个是相对于自身而言的,position是相对于父layer而言的;
另外:创建一个最简单的layer,需要5步:
CALayer *layer=[[CALayeralloc]init];//layer
layer.position=CGPointMake(50,50);//anchorPoint在父layer中的位置
layer.bounds=CGRectMake(0,0,30, 30);//大小
layer.backgroundColor=[UIColorredColor].CGColor;//颜色
[self.view.layeraddSublayer:layer];//加到父layer上
边框(向内缩进):borderWidth+borderColor
layer.borderWidth=3;
layer.borderColor=[UIColorpurpleColor].CGColor;
_layer1.cornerRadius=45;
layer.shadowColor=[UIColorblackColor].CGColor;
layer.shadowOffset=CGSizeMake(10,10);
layer.shadowOpacity=1;
layer.masksToBounds=YES;//切掉超出的部分
下面进入正题:mask:在被mask的对象上留下mask对象非空白的部分(被mask对象.mask=mask对象;)
1.子layer作为mask的对象
原图:添加了一个子layer后:用子layer裁剪: