iOS 画虚线的重新理解

1,029 阅读2分钟

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

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下载地址 :点击打开链接