我有一個可以在每個單元格中加載相當大的圖像的uitableview,並且單元格高度根據圖像的大小而變化。滾動性能不錯,但有時可能會變幹。改善iPhone UITableView滾動性能的技巧?
我發現這些技巧我在FieryRobot博客上發現:
glassy-scrolling-with-uitableview
more-glassy-scrolling-with-uitableview
有誰有改進的UITableView滾動性能的任何提示?
我有一個可以在每個單元格中加載相當大的圖像的uitableview,並且單元格高度根據圖像的大小而變化。滾動性能不錯,但有時可能會變幹。改善iPhone UITableView滾動性能的技巧?
我發現這些技巧我在FieryRobot博客上發現:
glassy-scrolling-with-uitableview
more-glassy-scrolling-with-uitableview
有誰有改進的UITableView滾動性能的任何提示?
UITableViewCell
的drawRect:
如果可能的話,不惜一切代價避免子視圖(或者,如果你需要的標準的輔助功能,內容畫面的drawRect:
)UITableViewCell
的層不透明(SA我去的內容視圖,如果你有一個)UITableView
例子/文檔UIImage
小號此外,下載的圖像應該縮小到imageView的大小,然後再顯示在單元上! –
我想補充一點,這是我過去幾年的經驗 - 透明細胞可能永遠不會造成滾動性能不佳。我們有一個非常複雜的單元格(20 +子視圖)的應用程序,它顯示背景都是透明的。通過適當的優化,即使在3GS上,透明度也沒有什麼不同。事實上,減緩最多東西的東西是在有足夠的單元格從桌面視圖中出列之前的筆尖加載。如果使用子視圖,只要確保有高效的層次結構,並且不需要使用drawRect。 – Accatyyc
@Accatyyc,似乎我有同樣的問題。當沒有足夠的信元出隊時,有3-4個信元出隊,然後滾動平穩。有什麼方法可以預先加載單元格,以便在滾動時有單元出隊和不加載NIB文件? – Tiois
Tweetie背後的開發人員已經撰寫了大量關於此的文章,並且有一些代碼演示了該應用的完成方式。基本上,他/她提倡爲每個表格單元格定製一個視圖,並手動繪製它(而不是使用Interface Builder進行子視圖以及其他選項)。
fast-scrolling-in-tweetie-with-uitableview
而且,蘋果已經更新了的TableView自己的示例代碼在其TableViewSuite教程(也許在應對呢?)
#1的性能殺手的UITableView滾動繪圖任何單元格視圖圖層上的陰影,所以如果滾動性能很重要,那麼除非基本上不會減慢主線程,否則不要執行陰影。
認爲這是必須說的,因爲沒有一個被接受的答案提到了陰影和圖層。 :+)
如果問題是陰影添加這兩行代碼和所有作品完美 self.layer.shouldRasterize = YES; self.layer.rasterizationScale = UIScreen.mainScreen.scale; –
滾動性能的任何問題都可以使用其他答案中已經描述的技術來解決。然而,很多時候性能低迷是由於內在錯誤或重複造成的。
UITableView
重複使用單元以及每個單元可能需要自己的圖像這一事實一起使得解決方案有點複雜。從它如何解決通用的方式,我在這裏總結一些應該注意的事情:
[tableView reloaddata]
cellForRowAtIndexPath
內,包括代碼,將設置從數組的正確的數據模型對象數據(文本)。爲避免出現問題,請參閱本教程中關於lazy loading of images內部表格視圖。
如果你需要緩存細胞高度(這可能是昂貴的計算,也經常使用),我舉了一個例子。只有在適用於您的應用程序時纔可以使用它。 http://stackoverflow.com/questions/1371223/how-do-i-cache-something-for-a-tableview/10992748#10992748 –