<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);
效果如下: