2010-05-27 91 views

回答

6

因爲它們被添加爲子視圖,並且繪製子視圖需要很多工作,因爲它們必須被合成。當Core Graphics或Core Animation使用這些子視圖繪製多個單元格時更是如此。

Loren Brichter (atebits)解釋它更好:

就像在Mac OS X,也有對iPhone 2個繪圖系統。一個是CoreGraphics,另一個是LayerKit CoreAnimation。 CoreGraphics在CPU上繪圖,CoreAnimation會根據它認爲最快的部分繪圖 - 最有可能是GPU。

iPhone上的GPU不喜歡融合,這就是爲什麼Apple建議您儘可能多地保留您的視圖不透明的原因。有時候你別無選擇 - 如果你在圖片上有一個標籤,你不得不使標籤變成透明的,否則你會在文字上出現一個很大的醜陋塊。

什麼是開發人員要做的?當然...與CoreGraphics預混合到您自己的視圖中。如果你按照需求將你的東西混合到一個靜態視圖中(例如當一個表視圖移動屏幕上的一個單元格時),對於第一幀來說它會更貴一些,但是之後的每一幀CoreAnimation都只是處理一個大的,不透明的它喜歡的紋理。它不僅僅是混合。如果你考慮透支方面的情況,每個表格單元格有一個大視圖是一個巨大的勝利,因爲CoreAnimation只會觸及屏幕上的一個給定像素一次而不是多次(可能取決於你的舊有多少重疊視圖層次結構)。

+0

該鏈接似乎是下降:(我可能是錯誤的,雖然因爲我在一個私人網絡 – GoodSp33d 2016-07-26 06:18:18

+1

@ GoodSp33d:你說得對,atebits.com已經停了好幾年了,好東西被存檔;我現在我已經編輯了我的答案 – BoltClock 2016-07-26 07:39:36

0

老實說,我不知道該怎麼回答。

我所知道的是,當我有一個非常「沉重」的UITableView,並且需要它滾動速度快,我使用的方法從特威特的創造者:

http://blog.atebits.com/2008/12/fast-scrolling-in-tweetie-with-uitableview/

沒有找到一個更好的比這個更方便。

+0

請不要將鏈接添加到您的應用或簽名到您的答案 – iwasrobbed 2010-07-24 03:14:53

+0

感謝您花時間提出請求,我很高興刪除我的簽名。 – camilo 2010-07-27 10:57:09