簡體   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