首页投稿(暂停使用,暂停投稿)

ios 绘制虚线 CGContextSetLineDash函数的

2017-08-21  本文已影响0人  Holly_9f63

 画虚线需要用到的函数: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数组的长度

上一篇下一篇

猜你喜欢

热点阅读