美文网首页
CAShapeLayer画虚线

CAShapeLayer画虚线

作者: blink被沉默了 | 来源:发表于2016-10-12 11:15 被阅读0次

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

          本文链接:https://www.haomeiwen.com/subject/fnhiyttx.html