CGContextDrawPath 只描边不填充

CGContextDrawPath only strokes and does not fill

我正在尝试制作一个可以描边和填充但无法填充的形状。

这是我的代码:

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
{
    CGMutablePathRef pathRef = CGPathCreateMutable();
    CGContextBeginPath(ctx);

    self.dottedLineColor = [UIColor whiteColor];
    self.solidLineColor = [UIColor blackColor];
    CGContextSetStrokeColorWithColor(ctx, [self.dottedLineColor CGColor]);
    CGContextSetFillColorWithColor(ctx, [UIColor blackColor].CGColor);

    CGContextSetLineWidth(ctx, 11.0);

    for (NSArray *array in previewPoints){
            CGPoint pointMadeFromString1 = CGPointFromString([array objectAtIndex:0]);
            CGPoint pointMadeFromString2 = CGPointFromString([array objectAtIndex:1]);

            CGPathMoveToPoint(pathRef, NULL, pointMadeFromString1.x, pointMadeFromString1.y);
            CGPathAddLineToPoint(pathRef, NULL, pointMadeFromString2.x, pointMadeFromString2.y);
            /*
             CGContextMoveToPoint(ctx, pointMadeFromString1.x, pointMadeFromString1.y);
             CGContextAddLineToPoint(ctx, pointMadeFromString2.x, pointMadeFromString2.y);

             CGContextSetLineWidth(ctx, 11.0);
             const CGFloat dashPattern[2] = {2, 0};
             CGContextSetLineDash(ctx, 2, dashPattern, 2);
             CGContextStrokePath(ctx);
             */
    }
    CGContextAddPath(ctx, pathRef);
    CGContextClosePath(ctx);

    CGContextDrawPath(ctx, kCGPathFillStroke);
    CGContextFillPath(ctx);
}

这是现在的样子:

中间的区域应该是黑色的。

我该如何解决这个问题?

问题是每次我使用 CGPathMoveToPoint 时,这意味着它无法填充,因为它实际上不是封闭路径。我将其切换为只有数组中的第一项会使用 CGPathMoveToPoint,然后所有其他项都会使用 CGPathAddLineToPoint.