iOS之在drawRect通过Quartz 2D画虚线圆。 函数为CGContextSetLineDash

<pre name="code" class="objc">    CGContextSetLineDash(<#CGContextRef  _Nullable c#>, <#CGFloat phase#>, <#const CGFloat * _Nullable lengths#>, <#size_t count#>)


 

参数解释:

context : 上下文

phase :  第一个点绘制的时候,跳过多少点

lengths: 数组, 如果交替绘制 @{10,10}, 这意思就是先绘制10个点, 再跳过10个点的实现,以此类推, 如果是 @{10,50,20}, 则意思变成 先绘制10个点, 再跳过50个点,再绘制20个点, 在跳过10个点,再绘制50个点,以此类推。 

count : lengths数组长度



举例子:


- (void)drawRect:(CGRect)rect {
    //1.获取上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    //1.1 设置线条的宽度
    CGContextSetLineWidth(ctx, 10);
    //1.2 设置线条的起始点样式
    CGContextSetLineCap(ctx,kCGLineCapButt);
    //1.3  虚实切换
    CGFloat length[] = {10,30,50};
    CGContextSetLineDash(ctx, 0, length, 3);
    //1.4 设置颜色
    [[UIColor whiteColor] set];
    //2.设置路径
    CGContextAddEllipseInRect(ctx, CGRectMake((kScreenW - 100)/2, (kScreenH - 100)/2, 100, 100));
    //3.绘制
    CGContextStrokePath(ctx);
}
效果图如下:



    //1.获取上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    //1.1 设置线条的宽度
    CGContextSetLineWidth(ctx, 10);
    //1.2 设置线条的起始点样式
    CGContextSetLineCap(ctx,kCGLineCapButt);
    //1.3  虚实切换
    CGFloat length[] = {5,10};
    CGContextSetLineDash(ctx, 0, length, 2);
    //1.4 设置颜色
    [[UIColor whiteColor] set];
    //2.设置路径
    CGContextAddEllipseInRect(ctx, CGRectMake((kScreenW - 100)/2, (kScreenH - 100)/2, 100, 100));
    //3.绘制
    CGContextStrokePath(ctx);



效果如下:




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值