CoreGraphics或Quartz Drawing不断清理

时间:2012-06-22 16:38:28

标签: iphone ios5 core-graphics quartz-graphics

我正在使用

其中penLayer是UIView

UIGraphicsBeginImageContext(penLayer.frame.size);

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

这很棒,但每次我调用drawRect时都会消除之前的情况 目前我不得不将所有绘图数据保存到字典

是否有任何方法阻止它在每次调用drawRect时清除,并且可能有一个在需要时调用clear的UIButton?

由于

1 个答案:

答案 0 :(得分:0)

有一个BOOL property on UIView called clearsContextBeforeDrawing。我假设你还没用过它。从文档中的讨论:

  

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

     

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