[英]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.