0

我在用着

penLayer 是一个 UIView

UIGraphicsBeginImageContext(penLayer.frame.size);

CGContextRef  context = UIGraphicsGetCurrentContext();
    //My Drawing Code
penLayer.image = UIGraphicsGetImageFromCurrentImageContext();
[penLayer setNeedsDisplay];

这画得很好,但每次我调用 drawRect 它都会清除之前的内容目前我必须将所有绘图数据保存到字典中

有没有办法阻止它在每次调用 drawRect 时清除,并且可能有一个 UIButton 在需要时调用 clear ?

谢谢

4

1 回答 1

0

UIView 上clearsContextBeforeDrawing有一个名为 的 BOOL 属性。我假设你没有使用它。从文档中的讨论:

设置为 时,在调用该方法YES之前,绘图缓冲区会自动清除为透明黑色。drawRect:此行为确保在重绘视图内容时不会留下任何视觉伪影。如果视图的opaque属性也设置为YES,则视图的属性backgroundColor不能为 nil,否则可能会出现绘图错误。此属性的默认值为YES

如果将此属性的值设置为NO,则您有责任确保视图的内容在您的drawRect:方法中正确绘制。如果您的绘图代码已经进行了高度优化,则将此属性设置为 NO 可以提高性能,尤其是在滚动期间,可能只需要重绘视图的一部分。

于 2012-06-22T16:43:45.937 回答