UIView的drawRect在不活动一段时间后被多次调用

时间:2012-03-20 15:06:47

标签: ios uiscrollview drawrect

我的iPad应用程序使用UIScrollView,我在其中实现了drawRect:方法。此方法仅更新需要重绘的视图部分。需要绘制的内容根据用户的某些手势而变化(如在绘图应用程序中)。在手势期间,使用需要重绘的rect调用scrollview的setNeedsDisplayInRect:方法。

这通常都可以正常工作并且符合预期。但是,如果用户在一段时间不活动(~10秒)后启动新手势,则drawRect:方法将被调用3次,其中rect参数的大小与屏幕大小(当前可见的滚动视图部分)相同)。这会导致手势识别器的帧速率明显下降。

我不知道为什么drawRect:方法被全屏rect调用3次。 我试图检测这些对drawRect的“不必要”调用,只是什么都不做。但是,这会导致屏幕清除(更改clearsContextBeforeDrawing没有帮助)。 我还尝试更改scrollview的contentMode属性。这对行为没有影响。

请注意,在手势期间永远不会调用scrollViewDidScroll:方法。

我已经在缓存需要在单独的CGImage中绘制的内容。但是,仅仅复制此图像已经有三次了。

有没有办法阻止drawRect:方法被调用3次?理想情况下,只应使用小矩形调用它来进行更新,但此时如果使用完整的rect只调用一次,我会感激不尽。

0 个答案:

没有答案