画虚线需要用到的函数:CG_EXTERN void CGContextSetLineDash(CGContextRef cg_nullable c, CGFloat phase,const CGFloat * __nullable lengths, size_t count)
CGContextRef currentContext = UIGraphicsGetCurrentContext();
phase 参数表示在第一个虚线绘制的时候跳过多少个点
lengths – 指明虚线是如何交替绘制
count – lengths数组的长度
- (void)drawRect:(CGRect)rect{
[super drawRect:rect];
if (rect.size.height>1) {
CGContextRef currentContext = UIGraphicsGetCurrentContext();
//设置虚线颜色
CGContextSetStrokeColorWithColor(currentContext, CELLSEPEPTERCOLOT.CGColor);
//设置虚线宽度
CGContextSetLineWidth(currentContext, 1);
//设置虚线绘制起点
CGContextMoveToPoint(currentContext, 0, 0);
CGContextAddLineToPoint(currentContext, 0 , self.frame.size.height);
//设置虚线排列的宽度间隔:下面的arr中的数字表示先绘制3个点再跳过1个点
CGFloat arr[] = {4,2};
//下面最后一个参数“2”代表排列的个数。
CGContextSetLineDash(currentContext, 2, arr, 2);
CGContextDrawPath(currentContext, kCGPathStroke);
}
else if (rect.size.width>1){
// Drawing code
CGContextRef context=UIGraphicsGetCurrentContext();//获取绘图用的图形上下文
CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor);//填充色设置成
CGFloat lengths[] = {4};
CGContextSetLineDash(context, 4, lengths,1);
CGContextFillRect(context,self.bounds);//把整个空间用刚设置的颜色填充
//上面是准备工作,下面开始画线了
CGContextSetStrokeColorWithColor(context, CELLSEPEPTERCOLOT.CGColor);//设置线的颜色
CGContextMoveToPoint(context,0,0);//画线的起始点位置
CGContextAddLineToPoint(context,self.frame.size.width,0);//画第一条线的终点位置
CGContextStrokePath(context);//把线在界面上绘制出来
}
}
注:lengths的值{5,2}表示先绘制5个点,再跳过2个点,如此反复
如果把lengths值改为{10, 5, 10},则表示先绘制10个点,跳过5个点,绘制10个点,跳过10个点,再绘制5个点,如此反复,count的值等于lengths数组的长度