我终于设法得到了一直没有使用的DrawRect (我也有setClearsContextBeforeDrawing:YES)
- (void)drawRect:(CGRect)rect
{
UIGraphicsPushContext(drawingContext);
CGImageRef cgImage = CGBitmapContextCreateImage(drawingContext);
UIImage *uiImage = [[UIImage alloc] initWithCGImage:cgImage];
CGContextSetLineWidth(drawingContext, 4.0);
if (draw)
CGContextSetStrokeColorWithColor(drawingContext, [UIColor whiteColor] CGColor]);
else
CGContextSetStrokeColorWithColor(drawingContext, [[UIColor clearColor] CGColor]);
CGContextMoveToPoint(drawingContext, lastPt.x - (31.0 / self.transform.a), lastPt.y - (31.0 / self.transform.a) );
CGContextAddLineToPoint(drawingContext, currPt.x - (31.0 / self.transform.a), currPt.y - (31.0 / self.transform.a) );
CGContextStrokePath(drawingContext);
UIGraphicsPopContext();
CGImageRelease(cgImage);
[uiImage drawInRect: rect];
lastPt = currPt;
}
这留下了一条线,它被绘制了 我的问题是当绘制是否[UIColor clearColor]没有删除我应该用什么擦除?提前致谢
答案 0 :(得分:2)
由于clearColor
的alpha值为零,因此使用它绘制通常没有任何效果。您需要将上下文的混合模式设置为kCGBlendModeCopy
才能使其生效。
但是,当您想要删除时,将上下文的混合模式设置为kCGBlendModeClear
会更简单,并且当您想要绘制时将其设置回kCGBlendModeNormal
:
if (draw) {
CGContextSetBlendMode(drawingContext, kCGBlendModeNormal);
CGContextSetStrokeColorWithColor(drawingContext, [UIColor whiteColor] CGColor]);
} else {
CGContextSetBlendMode(drawingContext, kCGBlendModeClear);
}