CAShapeLayer画虚线

今天公司给了一个需求,要求画上一段圆弧的虚线,说实话小弟不曾做过这个,不过后来这个需求给别人做了,小弟心痒难耐,还是上网搜了一下,才知道了虚线这东西可以用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];

你可能感兴趣的:(CAShapeLayer画虚线)