[英]UITableView scrolling performance
我正在盡力使用Instruments分析我的應用程序,並找出我的代碼在哪里昂貴。 在scrollViewDidScroll:(UIScrollView *)scrollView
調用[self checkVisibleCells]
方法。 我在屏幕上看到大約兩個/三個單元格,具體取決於它們的高度。 然后,我確定該單元格是否完全可見並將其標記為已讀。 在此線程中使用答案: 檢查UITableViewCell是否完全可見的最佳方法
到目前為止,我只能看到self.tableView.visibleCells
需要很長時間。 獲取visibleCells
真的很貴嗎? 是否有更好的方法來做到這一點?
完整尺寸截圖在這里: https : //www.dropbox.com/s/wt8e2uat9t81qt3/Screenshot%202014-05-06%2009.26.25.png
在這種情況下,我能給您的最佳建議是明智地確定何時在tableView
上准確調用- (NSArray *)visibleCells
。
scrollViewDidScroll
被稱為地獄。 如果您每次都在tableView
上調用.visibleCells
,那也就不足為奇了。
我的建議是,考慮到您顯然知道表格視圖單元的高度(無論是在代碼中還是在IB中聲明),我將以此為您優勢。 請注意,如果您的單元格高度不同,這將不會真正起作用。
首先,在您的checkVisibleCells方法中,添加以下內容:
- (void)checkVisibleCells
{
CGFloat newContentOffsetY = self.tableView.contentOffset.y;
BOOL tableViewHasScrollFarEnough = newContentOffsetY > lastCheckedContentOffsetY + MysteriousViewControllerTableViewCellHeight;
tableViewHasScrollFarEnough = tableViewHasScrollFarEnough || self.tableView.contentOffset.y < self.lastCheckedContentOffsetY - MysteriousViewControllerTableViewCellHeight;
if (tableViewHasScrollFarEnough)
{
return;
}
self.lastCheckedContentOffsetY = self.tableView.contentOffset.y;
// ... the rest of the method
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.