美文网首页iOS 动画iOS开发实践
ios 绘制虚线 CGContextSetLineDash的使用

ios 绘制虚线 CGContextSetLineDash的使用

作者: 天狼鹰 | 来源:发表于2018-05-18 15:37 被阅读279次

    Graphics Context是图形上下文,可以将其理解为一块画布,我们可以在上面进行绘画操作,绘制完成后,将画布放到我们的view中显示即可,view看作是一个画框.

    画虚线需要用到函数:

    CGContextSetLineDash

    此函数需要四个参数:

    context– 这个不用多说

    phase- 稍后再说

    lengths– 指明虚线是如何交替绘制,具体看例子

    count – lengths数组的长度

    CGContextRef context =UIGraphicsGetCurrentContext(); 

     CGContextBeginPath(context);  

    CGContextSetLineWidth(context, 2.0); 

     CGContextSetStrokeColorWithColor(context, [UIColorwhiteColor].CGColor); 

     float lengths[] = {10,10};  

    CGContextSetLineDash(context, 0, lengths,2);  

    CGContextMoveToPoint(context, 10.0, 20.0); 

     CGContextAddLineToPoint(context, 310.0,20.0);  

    CGContextStrokePath(context);  

    CGContextClosePath(context); 

    lengths的值{10,10}表示先绘制10个点,再跳过10个点,如此反复,如图:

    如果把lengths值改为{10, 20, 10},则表示先绘制10个点,跳过20个点,绘制10个点,跳过10个点,再绘制20个点,如此反复,如图:

    注意count的值等于lengths数组的长度

    phase参数表示在第一个虚线绘制的时候跳过多少个点,举例说明:

    float lengths[] = {10,5};  

    CGContextSetLineDash(context, 0, lengths, 2);    

    CGContextMoveToPoint(context, 0.0, 20.0);    

    CGContextAddLineToPoint(context, 310.0, 20.0);     

    CGContextStrokePath(context);  

    CGContextSetLineDash(context, 5, lengths, 2);  

    CGContextMoveToPoint(context, 0.0, 40.0);    

    CGContextAddLineToPoint(context, 310.0, 40.0);  

    CGContextStrokePath(context);             

    CGContextSetLineDash(context, 8, lengths, 2);     

    CGContextMoveToPoint(context, 0.0, 60.0);             

    CGContextAddLineToPoint(context, 310.0, 60.);             

    CGContextStrokePath(context); 

    如图显示:

    由于lengths值为{10,5},第一条线就是绘制10,跳过5,反复绘制。

    第二条线的phase值为5,则首先绘制【10减去5】,再跳过5,绘制10,反复绘制。

    第三条给也如此,先绘制2,再跳过5,如此反复。

    原文地址

    相关文章

      网友评论

        本文标题:ios 绘制虚线 CGContextSetLineDash的使用

        本文链接:https://www.haomeiwen.com/subject/uimgdftx.html