擦除绘图&捕获UIView绘图的截图无法正常工作

时间:2013-09-27 09:26:26

标签: ios objective-c uiview drawing uibezierpath

我使用UIBezierPath在UIView(它的背景是透明的)上实现了绘制线。

对于绘图线,我在- (void)drawRect:(CGRect)rect方法中使用了以下代码: -

UIBezierPath *_path = [pathArray objectAtIndex:0];
[currentColor setStroke];
[_path strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];

这里pathArray是多个UIBezierPath对象的数组。

为了删除绘图,我在- (void)drawRect:(CGRect)rect方法中使用了以下代码: -

UIBezierPath *_path = [pathArray objectAtIndex:10];
[[UIColor clearColor] setStroke];
[_path strokeWithBlendMode:kCGBlendModeClear alpha:1.0];

在透明的UIView上绘制时,两种方法都运行良好。但是当我用白色背景颜色绘制UIView时,出现了黑色,我已经擦除了画面。捕获图纸视图的截图时也出现了同样的问题。任何解决方案?

请参阅相同图纸的以下屏幕截图,您将清楚地了解它。

1 个答案:

答案 0 :(得分:1)

我自己解决了问题。我已经编写了用于删除绘图的代码,如:

UIBezierPath *_path = [pathArray objectAtIndex:10];
[drawingView.backgroundColor setStroke];
[_path strokeWithBlendMode:kCGBlendModeCopy alpha:1.0];

在此,您必须将strokeWithBlendMode设置为kCGBlendModeCopy而不是kCGBlendModeClear,并使用您正在绘制的背景颜色。