中风没有出现在Circle上

时间:2014-05-05 23:20:48

标签: ios7 core-graphics cgrect stroke

我试图在我的空心圆圈周围添加一个笔划,但它没有出现。有人可以帮助我,请找出我出错的地方并妥善解决。多年来一直坚持这一点似乎没有任何作用!

这是我运行代码时的目前情况:

enter image description here

我想在空心圆的外面添加一条笔划线,但我的代码不起作用,我不知道我哪里出错了。真的很感激一些帮助。

以下是我的代码:

- (void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context
{
    // Fill full map rect with some color.
    CGRect rect = [self rectForMapRect:mapRect];
    CGContextSaveGState(context);
    CGContextAddRect(context, rect);
    CGContextSetFillColorWithColor(context, [UIColor colorWithRed:0 green:255 blue:255 alpha:0.4f].CGColor);
    CGContextFillRect(context, rect);
    CGContextRestoreGState(context);

    // Clip rounded hole.
    CGContextSaveGState(context);
    CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
    CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
    CGContextSetBlendMode(context, kCGBlendModeClear);
    CGContextFillEllipseInRect(context, [self rectForMapRect:[self.overlay boundingMapRect]]);

    CGContextSetLineWidth(context, 1);

    CGContextStrokeEllipseInRect(context, [self rectForMapRect:[self.overlay boundingMapRect]]);
    CGContextRestoreGState(context);
    // Draw circle
    [super drawMapRect:mapRect zoomScale:zoomScale inContext:context];
}

固定 - 工作代码:

    // Fill full map rect with some color.
    CGRect rect = [self rectForMapRect:mapRect];
    CGContextSaveGState(context);
    CGContextAddRect(context, rect);
    CGContextSetFillColorWithColor(context, [UIColor colorWithRed:0 green:255 blue:255 alpha:0.4f].CGColor);

    CGContextFillRect(context, rect);
    CGContextRestoreGState(context);

    // Clip rounded hole.
    CGContextSaveGState(context);
    CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
    CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
    CGContextSetLineWidth(context, 300);
    CGContextStrokeEllipseInRect(context, [self rectForMapRect:[self.overlay boundingMapRect]]);
    CGContextSetBlendMode(context, kCGBlendModeClear);
    CGContextFillEllipseInRect(context, [self rectForMapRect:[self.overlay boundingMapRect]]);
    CGContextRestoreGState(context);
    // Draw circle
    [super drawMapRect:mapRect zoomScale:zoomScale inContext:context];

1 个答案:

答案 0 :(得分:2)

执行此操作:CGContextSetLineWidth(context,1);在应用笔画之前。