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

    xiaoxiao2026-05-28  1

    <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);

    效果如下:

    转载请注明原文地址: https://ju.6miu.com/read-1310147.html
    最新回复(0)