drawRect使UIScrollView中的滚动速度变慢

时间:2011-05-16 12:19:41

标签: uiscrollview drawrect setneedsdisplay

我有一个带有(自定义)UIView的UIScrollView。

在我的scrollViewDidScroll方法中,我正在调用

[myCustomView setNeedsDisplay];

如果我在自定义UIView中实现drawRect:方法,即使它完全为空,这会使滚动明显变慢。

一旦我删除了drawRect:方法,它就会再次平滑。

我完全不知道,为什么......你们中的任何人?

1 个答案:

答案 0 :(得分:3)

我也讨厌画笔

“这是因为硬件加速动画在Cocoa中的运作方式。

如果您没有自定义drawRect方法,系统会在视频内存中缓存视图的像素。当需要重绘它们时,它只是将像素点亮到屏幕上。

如果你有一个自定义的drawRect方法,系统必须调用你的drawRect方法来渲染主存储器中的像素,然后将这些像素复制到视频存储器中,然后将每个帧的像素绘制到屏幕上。如果可以,文档会说要避免使用drawRect。

我认为主内存和视频内存在大多数/所有iOS设备上共享,但是当您为视图实现drawRect方法时,系统还有很多工作要做。

使用OpenGL层并使用OpenGL调用渲染它可能会更好,因为OpenGL直接与显示硬件对话。“

链接到该引用:http://www.iphonedevsdk.com/forum/iphone-sdk-development/80637-drawrect-makes-scrolling-slow-uiscrollview.html