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

标签 ios swift uitableview scrollbar

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

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

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

最佳答案

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

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

您可以将 estimatedRowHeight 设置为更接近平均行高的值。

tableView.estimatedRowHeight = 100

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

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

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

关于ios - UITableView 滚动条随着用户滚动而改变大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33785817/

相关文章:

iphone - UITableView - 扩展单元格

iOS11 : Can't create folder again in iCloud drive once deleted manually

ios - 自定义 UITableViewCell 高度在移动时发生变化

ios - 如何制作这个添加好友的UI

Objective-C - ScrollView 事件

ios - Xcode 9 认为我的项目有两个 Remote ...我没有 - 如何删除第二个?

ios - 如何在 firebase (swift) 中获取子节点的值,并将其显示在 View Controller 的标签中

ios - 更改 MFMailComposeViewControllers 状态栏样式

swift - Firebase 规则中有关 indexOn 的恼人问题

ios - 暂时移除NSLayoutConstraint?