美文网首页
TableView复用Cell数量之谜

TableView复用Cell数量之谜

作者: Jonet | 来源:发表于2020-06-10 16:57 被阅读0次

    偶然发现一个现象,跟预期不太一样。

    如论如何设置Tableview的行高,它创建的用于的复用Cell数量是恒定的。

    那么这是什么情况呢?

    • 行高为100时


      Simulator Screen Shot - iPhone 11 - 2020-06-10 at 16.42.37.png
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
            var cell = tableView.dequeueReusableCell(withIdentifier: Self.ID)
            if cell == nil {
                cell = MyTableViewCell(style: .default, reuseIdentifier: Self.ID)
                print("indexPath.row + \(indexPath.row)")
            }
            cell!.textLabel?.text = "\(indexPath.row)"
            return cell!
     }
    
    
    // tableView.rowHeight = 100.0
    控制台输出结果:
    indexPath.row + 0
    indexPath.row + 1
    indexPath.row + 2
    indexPath.row + 3
    indexPath.row + 4
    indexPath.row + 5
    indexPath.row + 6
    indexPath.row + 7
    indexPath.row + 8
    indexPath.row + 9
    indexPath.row + 10
    indexPath.row + 11
    indexPath.row + 12
    indexPath.row + 13
    indexPath.row + 14
    indexPath.row + 15
    indexPath.row + 16
    indexPath.row + 17
    indexPath.row + 18
    indexPath.row + 19
    
    • 行高为200时


      Simulator Screen Shot - iPhone 11 - 2020-06-10 at 16.42.28.png
    // tableView.rowHeight = 200.0
    控制台输出结果:
    indexPath.row + 0
    indexPath.row + 1
    indexPath.row + 2
    indexPath.row + 3
    indexPath.row + 4
    indexPath.row + 5
    indexPath.row + 6
    indexPath.row + 7
    indexPath.row + 8
    indexPath.row + 9
    indexPath.row + 10
    indexPath.row + 11
    indexPath.row + 12
    indexPath.row + 13
    indexPath.row + 14
    indexPath.row + 15
    indexPath.row + 16
    indexPath.row + 17
    indexPath.row + 18
    indexPath.row + 19
    
    • 不设置行高时,也就是默认行高为44


      Simulator Screen Shot - iPhone 11 - 2020-06-10 at 16.42.42.png
    // tableView.rowHeight = 44
    控制台输出结果:
    indexPath.row + 0
    indexPath.row + 1
    indexPath.row + 2
    indexPath.row + 3
    indexPath.row + 4
    indexPath.row + 5
    indexPath.row + 6
    indexPath.row + 7
    indexPath.row + 8
    indexPath.row + 9
    indexPath.row + 10
    indexPath.row + 11
    indexPath.row + 12
    indexPath.row + 13
    indexPath.row + 14
    indexPath.row + 15
    indexPath.row + 16
    indexPath.row + 17
    indexPath.row + 18
    indexPath.row + 19
    

    到这里是不是恍然大悟了。。。

    结论

    UITableView的复用机制所创建的Cell数量不随自定义的行高而改变,而是恒定的数值。
    即在默认行高下,整个屏幕所能展示的最多Cell的数量,🉑️根据屏幕高度与默认行高的比值计算得出!

    相关文章

      网友评论

          本文标题:TableView复用Cell数量之谜

          本文链接:https://www.haomeiwen.com/subject/rujptktx.html