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

Sch*_*999 2 scrollbar uitableview ios swift

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

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

有没有人对如何解决这个问题有任何想法(我使用的是 Swift 和 Xcode 7.1.1)?

Cra*_*ens 5

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

由于您没有说明如何确定行的高度,因此我假设您使用的是自动布局。

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

tableView.estimatedRowHeight = 100
Run Code Online (Sandbox Code Playgroud)

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

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

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