今天公司给了一个需求,要求画上一段圆弧的虚线,说实话小弟不曾做过这个,不过后来这个需求给别人做了,小弟心痒难耐,还是上网搜了一下,才知道了虚线这东西可以用CAShapeLayer画出来,话不多说,上代码:
首先要初始化shapeLayer,还要设置frame什么的,这些都是常识:
//设置shapeLayer
self.shapeLayer = [CAShapeLayer layer];
self.shapeLayer.frame = CGRectMake(0, 0, 200, 200);
self.shapeLayer.position = self.view.center;
self.shapeLayer.fillColor = [[UIColor clearColor] CGColor];
然后要画圆,就得用到一个类UIBezierPath
//创建圆形贝塞尔曲线
UIBezierPath *circlePath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, 200, 200)];
因为是画一段圆弧,不是整个圆,所以还要设置一下,stroke这个属性是画的意思,strokeStart就是开始,那么strokeEnd自然就是结束了
//strokeStart和strokeEnd设置起始和结束
self.shapeLayer.path = circlePath.CGPath;
self.shapeLayer.strokeStart = 0;
self.shapeLayer.strokeEnd = 0.75;
这里1是整个圆,半圆就是05,0.75就是3/4个圆弧,现在这段圆弧算是出来了,但是它是实现,我们要的是虚线,所以下面要设置虚线
//虚线颜色
[self.shapeLayer setStrokeColor:[[UIColor colorWithRed:223/255 green:224/255 blue:224/255 alpha:1.0f] CGColor]];
//虚线宽度
[self.shapeLayer setLineWidth:1.0f];;
[self.shapeLayer setLineJoin:kCALineJoinRound];
//设置虚线长度和间隔
[self.shapeLayer setLineDashPattern:[NSArray arrayWithObjects:[NSNumber numberWithInt:3],[NSNumber numberWithInt:1],nil]];
OK,现在就是一段虚线的3/4个圆弧了,接下来就要把layer加载到view上就可以了
//加载视图
[[self.view layer] addSublayer:self.shapeLayer];