最近又在弄拼图这个功能,在实现起来时还有一些细节上的问题没有更好的把握住,因而再次温习一下这个类,首先我们需要讨论的是,什么是CAShaperLayer?
1、什么是CAShaperLayer?
CAShaperLayer就是一个继承与CALayer的具有具体形状,比如说圆形、三角形、正方形等等各种不同形状的Layer,而所谓的layer就是图层,图层就是用来渲染界面的基础。
2、CAShaperLayer的作用?
CAShaperLayer也就是在现有的图层上再次添加或覆盖一层以达到界面在显示时会呈现出不同形状的效果。比如说拼图。而显示出不同的形状是需要用UIBezierPath来划的,下面简单举两个例子。
3、CAShaperLayer的应用?
多的不说,直接上我的代码:
// 利用UIBezierPath来划出不同的方式
UIBezierPath *path = [UIBezierPath bezierPath];
path.lineWidth = 1;
path.lineCapStyle = kCGLineCapRound;
path.lineJoinStyle = kCGLineJoinRound;
// 第一个点(起点)
[path moveToPoint:CGPointZero];
// 第二个点的位置为宽度的一半
CGFloat moveOneX = contentView.width * 0.5;
// 第二个点
CGPoint moveOne = CGPointMake(moveOneX, 0);
[path addLineToPoint:moveOne];
// 第三个点的位置为宽度的4分之一,Y为整高
CGFloat moveTwoX = contentView.width * 0.25;
CGFloat moveHeight = contentView.height;
// 第三个点
CGPoint moveTwo = CGPointMake(moveTwoX, moveHeight);
[path addLineToPoint:moveTwo];
CGPoint moveThree = CGPointMake(0, moveHeight);
[path addLineToPoint:moveThree];
// 结束划线
[path closePath];
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.path = path.CGPath;
// maskLayer的填充颜色
// maskLayer.fillColor = [UIColor redColor].CGColor;
maskLayer.lineWidth = 1;
// mask是指在图层上盖一层看不见的图片,除path之外
contentView.layer.mask = maskLayer;
// 在图层上添加图层
// [contentView.layer addSublayer:maskLayer];
还有一些其他人博客上的例子,下面这个是比较经典的,我就只列举他一个人的:
http://blog.csdn.net/yongyinmg/article/details/38755955