UITableView 滚动条随着用户滚动而改变大小

UITableView Scroll Bar changes in size as user scrolls

我有一个UITableView,其中每个单元格的大小都不同(这取决于需要显示的内容量)。

结果(或者至少我认为结果),当用户第一次开始滚动时,垂直滚动条最初很小。随着用户继续滚动,滚动条会增长,当用户到达最后一个单元格时达到正确的长度。

有没有人知道如何解决这个问题(我正在使用 Swift 和 Xcode 7.1.1)?

当您为 UITableView 提供的估计行高始终大于实际行高时,通常会发生这种情况。

既然你没有说明你是如何确定行高的,我假设你使用的是自动布局。

您要么想要将 estimatedRowHeight 设置为更接近平均行高的值。

tableView.estimatedRowHeight = 100

另一种选择是使用 UITableViewDelegate 方法 return 每行的估计高度更接近实际值。

func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    let estimatedHeight = // some fast calculation based on the data for the row
    return estimatedHeight
}

如果您的行通常大小相同且变化不大,则选择第一个选项。如果行大小可以有很多变化,或者您无法知道一个好的平均值是多少,则第二个选项更好。