之前写了一篇画虚线的文章,只是做了效果,并没有对其画的过程原来深刻理解,当时只是为了业务需求。今天刚刚好遇到群里有人问了,回头又重新理解了一下。
群里朋友 需求是彩色虚线。效果如图
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下载地址 :点击打开链接
网友评论