iOS 画虚线的重新理解

之前写了一篇画虚线的文章,只是做了效果,并没有对其画的过程原来深刻理解,当时只是为了业务需求。今天刚刚好遇到群里有人问了,回头又重新理解了一下。
群里朋友 需求是彩色虚线。效果如图


image

完整代码如下:

    UIImageView *iView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 100, self.view.frame.size.width, 20)];  
    [self.view addSubview:iView];  
 
     UIGraphicsBeginImageContext(iView.frame.size); //参数size为新创建的位图上下文的大小  
     [iView.image drawInRect:CGRectMake(0, 0, iView.frame.size.width, iView.frame.size.height)];  
     CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapSquare); //设置线段收尾样式  
 
     CGFloat length[] = {20,40}; // 线的宽度,间隔宽度  
     CGContextRef line = UIGraphicsGetCurrentContext(); //设置上下文  
     CGContextSetStrokeColorWithColor(line, [UIColor redColor].CGColor);  
     CGContextSetLineWidth(line, 5); //设置线粗细  
     CGContextSetLineDash(line, 0, length, 2);//画虚线  
     CGContextMoveToPoint(line, 0, 20.0); //开始画线  
     CGContextAddLineToPoint(line, self.view.frame.size.width, 20);//画直线  
     CGContextStrokePath(line); //指定矩形线  
 
     // 在line 中间的间隔里 再画一条不同颜色的间隔线  
     CGContextRef line2 = UIGraphicsGetCurrentContext();  
     CGContextSetStrokeColorWithColor(line2, [UIColor blackColor].CGColor);  
     CGContextSetLineWidth(line2, 5);  
     CGContextSetLineDash(line2, 0, length, 2);//画虚线  
     CGContextMoveToPoint(line2, 30, 20.0); //开始画线line2 参数对象,X坐标,Y坐标  
     CGContextAddLineToPoint(line2, self.view.frame.size.width, 20);  
     CGContextStrokePath(line2);  
 
     iView.image = UIGraphicsGetImageFromCurrentImageContext();  

这一句 设置每段虚线的线条的宽度和间隔的宽度

  CGFloat length[] = {20,40}; // 线的宽度,间隔宽度  

分别注释掉line 和line2的代码得到两张虚线图


image

image

把它们合并到一起 就变成了上面的彩色虚线啦。

完整demo下载地址 :点击打开链接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容