如何防止UIView的drawRect清除以前drawRect调用绘制的路径?

时间:2009-02-28 08:54:38

标签: iphone cocoa-touch

每次调用UIView的drawRect时,前一个drawRect(使用Core Graphics)绘制的内容都会被清除。我怎样才能使之前drawRect调用所呈现的路径保持不变直到我明确清除它?

3 个答案:

答案 0 :(得分:3)

您基本上需要剪切已经进行更改的矩形的“脏”部分,并且只会重新绘制此部分。

- (void)setNeedsDisplayInRect:(CGRect)invalidRect

答案 1 :(得分:1)

我现在正在自己解决这个问题。问题是UIView上有一个名为“clearsContextBeforeDrawing”的属性,根据文档应该可以解决这个问题,但是根据我的经验,它不会那样工作。

我认为最终解决这个问题的方法是分配一个屏幕外缓冲区并在那里完成我的绘图,然后将它转移到drawRect方法中的UIView。

答案 2 :(得分:0)

我很确定没有办法解决这个问题;这是UIView的设计工作方式。如果被要求,您的自定义视图应该能够随时绘制自己的任何部分。这部分是因为视图可以做的不仅仅是出现在屏幕上。例如在桌面上,他们可以打印,甚至在iPhone上,您可能希望将视图的内容捕获到位图。