美文网首页
iOS 方形虚线的实现

iOS 方形虚线的实现

作者: 风沙搁浅的希望 | 来源:发表于2017-11-20 17:09 被阅读18次

    项目中经常有虚线的需求,现整理一部分,不足之处再修改

    方形虚线:

    /**
    
    ** lineView:      需要绘制成方形虚线的view
    
    ** lineLength:    虚线的宽度
    
    ** lineSpacing:  虚线的间距
    
    ** lineColor:     虚线的颜色
    
    **/
    
    
    -(void)drawSquareDottedLine:(UIView*)squareView lineLength:(int)lineLength lineSpacing:(int)lineSpacing lineColor:(UIColor*)lineColor
    
    {
    
    CAShapeLayer *border = [CAShapeLayer layer];
    
    border.strokeColor = lineColor.CGColor;
    
    border.fillColor = nil;
    
    border.path = [UIBezierPath bezierPathWithRect:squareView.bounds].CGPath;
    
    border.frame = squareView.bounds;
    
    border.lineWidth = 1.0f;
    
    border.lineCap = @"square";
    
    border.lineDashPattern = @[@(lineLength), @(lineSpacing)];
    
    [squareView.layer addSublayer:border];
    
    }
    

    虚线:

    /**
    
    ** lineView:      需要绘制成虚线的view
    
    ** lineLength:  虚线的宽度
    
    ** lineSpacing: 虚线的间距
    
    ** lineColor:     虚线的颜色
    
    **/
    
    - (void)drawDashLine:(UIView *)lineView lineLength:(int)lineLength lineSpacing:(int)lineSpacing lineColor:(UIColor *)lineColor
    
    {
    
    CAShapeLayer *shapeLayer = [CAShapeLayer layer];
    
    [shapeLayer setBounds:lineView.bounds];
    
    [shapeLayer setPosition:CGPointMake(CGRectGetWidth(lineView.frame) / 2, CGRectGetHeight(lineView.frame))];
    
    [shapeLayer setFillColor:[UIColor clearColor].CGColor];
    
    //  设置虚线颜色为blackColor
    
    [shapeLayer setStrokeColor:lineColor.CGColor];
    
    //  设置虚线宽度
    
    [shapeLayer setLineWidth:CGRectGetHeight(lineView.frame)];
    
    [shapeLayer setLineJoin:kCALineJoinRound];
    
    //  设置线宽,线间距
    
    [shapeLayer setLineDashPattern:[NSArray arrayWithObjects:[NSNumber numberWithInt:lineLength], [NSNumber numberWithInt:lineSpacing], nil]];
    
    //  设置路径
    
    CGMutablePathRef path = CGPathCreateMutable();
    
    CGPathMoveToPoint(path, NULL, 0, 0);
    
    CGPathAddLineToPoint(path, NULL, CGRectGetWidth(lineView.frame), 0);
    
    [shapeLayer setPath:path];
    
    CGPathRelease(path);
    
    //  把绘制好的虚线添加上来
    
    [lineView.layer addSublayer:shapeLayer];
    
    }
    

    相关文章

      网友评论

          本文标题:iOS 方形虚线的实现

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