我每次使用setNeedsDisplay调用drawRect时都会显示大量图像。
问题是,每当我调用dracRect时,都会导致原因滞后,我会重绘每张图像(数千个)。

有没有一种方法可以不重画所有图像。我的意思是,保留所有图像并绘制要绘制的图像?

谢谢,

最佳答案

避免重绘所有内容的一种方法是调用setNeedsDisplayInRect:而不是setNeedsDisplay:,并仅传递包含需要重绘图像的矩形。当然,这意味着drawRect不能再忽略传入的矩形:浏览图像,并检查图像是否与正在重绘的矩形重叠。如果没有重叠,请跳过图像并在重绘上节省一些CPU时间。

请注意,这是维护视图的非常“手动”的方式。考虑使用iOS为您提供的某些组件,例如UICollectionView,它使您可以用很少的代码在屏幕上显示很多内容。

关于ios - setNeedsDisplay不刷新屏幕,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15973619/

10-11 14:29