2011-05-16 91 views
1

我有一個UIScrollView與(自定義)UIView裏面。drawRect使滾動緩慢UIScrollView

在我scrollViewDidScroll法我打電話

[myCustomView setNeedsDisplay]; 

這使得滾動明顯慢了,如果我實現drawRect:方法在我的自定義的UIView - 即使它是完全空的。

當我刪除drawRect:方法,它的順利試。

我完全不知道,爲什麼......你們任何人?

回答

3

我討厭的drawRect太

「這是因爲硬件加速而動畫中可可的工作方式。

如果沒有自定義的drawRect方法,系統緩存像素在您的視圖視頻內存當它需要重畫它們時,它只是將像素點擊到屏幕上

如果你有一個自定義的drawRect方法,系統必須調用你的drawRect方法來渲染主內存中的像素,這些像素分配到視頻內存中,然後在每一幀中爲每個像素畫出像素如果可以的話,void drawRect。

我認爲主內存和顯存的大多數/所有iOS設備共享,但是系統仍然有大量的工作,當你實現一個視圖的drawRect方法來做。

你可能會得到更好的服務使用一個OpenGL層和渲染,以與OpenGL調用,因爲OpenGL的與顯示器硬件直接會談「

鏈接到一個報價:http://www.iphonedevsdk.com/forum/iphone-sdk-development/80637-drawrect-makes-scrolling-slow-uiscrollview.html

+0

無論如何,我認爲'的drawRect:?!'是你怎麼想使用像'UITableViewCell'控制完美的方式 – 2014-01-24 20:07:44

+1

是的,絕對當的UITableViewCell的內容查看圖紙,視圖本身並不令人耳目一新像它會在一個UIScrollView。 – Riskov 2014-01-27 14:06:41