IOS 画虚线方法

使用CGContext 绘图方法

1.重写draw rect 方法:

-(void)drawRect:(CGRect)rect{
    [super drawRect:rect];
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextBeginPath(context);
    CGContextSetLineWidth(context,2.0f);//线宽度这里是像素大小
    CGContextSetStrokeColorWithColor(context,[UIColor blueColor].CGColor);
    CGFloat lengths[] = {1,3};//先画2个点再画2个点
    CGContextSetLineDash(context,0, lengths,2);//注意2(count)的值等于lengths数组的长度
    CGContextMoveToPoint(context,0,0);
    CGContextAddLineToPoint(context,self.frame.size.width / 2.0f,0);
    CGContextStrokePath(context);
    CGContextClosePath(context);
}

iOS 画虚线方法总结 作者有提到另外一种方法叫通过UIImage的绘图方法来绘制 的这种方法,其实还是通过CGContext 的方式绘制曲线。

具体CGContext 相关的内容可见:
apple 官网

IOS开发之——绘图(CGContext)

例子请见

iOS CGContextRef的使用

通过CAShapeLayer方式绘制虚线

2.通过CAShapeLayer方式绘制虚线

/**
 ** 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];
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 好几天都没有写简书了,主要是最近一直在做原型图,六天的时间出了两个项目的原型(PC+手机),结果累成狗,发现...
    Peak_One阅读 47,276评论 22 69
  • --绘图与滤镜全面解析 概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益...
    韩七夏阅读 7,828评论 2 10
  • 原文出处 http://blog.csdn.net/u014286994/article/details/5133...
    Poison_19ce阅读 5,351评论 0 2
  • 目录: 主要绘图框架介绍 CALayer 绘图 贝塞尔曲线-UIBezierPath CALayer子类 补充:i...
    Ryan___阅读 5,642评论 1 9
  • 现今社会老人越来越多 素质也越来越差 这些所谓的老人占着自己年纪大处处要别人谦让 真实low 你年纪大所有人就应...
    我在谁心里阅读 2,795评论 0 2

友情链接更多精彩内容