繁体   English   中英

UITableView滚动性能

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM