iOS UITableView estimatedRowHeight 从属性出现到被取代
2023-09-19 03:17:38
estimatedRowHeight 缘起
在 iOS 7.0 之前,UITableView 没有 estimatedRowHeight 属性。当 UITableView 加载时,它需要计算所有行的高度。如果列表包含高度可变的行,则此计算可能会非常昂贵。
为了提高列表视图的加载性能,苹果公司在 iOS 7.0 中引入了 estimatedRowHeight 属性。该属性允许您为行高提供一个非负的预估值。UITableView 将使用此预估值来计算列表视图的高度。
estimatedRowHeight 的作用
estimatedRowHeight 属性有两个主要作用:
- 提高列表视图的加载性能。当 UITableView 加载时,它将使用 estimatedRowHeight 属性来计算列表视图的高度。这比计算所有行的高度要快得多。
- 减少列表视图的抖动。当您滚动列表视图时,UITableView 将使用 estimatedRowHeight 属性来估计行的高度。这可以减少列表视图的抖动。
estimatedRowHeight 的局限性
estimatedRowHeight 属性虽然可以提高列表视图的加载性能和减少列表视图的抖动,但它也有一些局限性:
- estimatedRowHeight 属性仅适用于高度可变的行。如果您列表中的所有行都具有相同的高度,那么您不必使用 estimatedRowHeight 属性。
- estimatedRowHeight 属性只能提供一个预估值。UITableView 将使用此预估值来计算列表视图的高度,但实际高度可能与预估值不同。
- estimatedRowHeight 属性可能会导致列表视图出现滚动条问题。如果您列表中的行高度差异很大,那么您可能会看到列表视图出现滚动条问题。
estimatedRowHeight 在 iOS 11.0 中被取代
在 iOS 11.0 中,estimatedRowHeight 属性被 estimatedHeightForRowAt
方法取代。estimatedHeightForRowAt
方法允许您为给定的行提供一个非负的预估值。UITableView 将使用此预估值来计算列表视图的高度。
estimatedHeightForRowAt
方法比 estimatedRowHeight
属性更灵活。您可以为不同的行提供不同的预估值。这可以减少列表视图的抖动和滚动条问题。
总结
estimatedRowHeight 属性是一个非常有用的属性,它可以提高列表视图的加载性能和减少列表视图的抖动。但是,它也有一些局限性。在 iOS 11.0 中,estimatedRowHeight 属性被 estimatedHeightForRowAt
方法取代。estimatedHeightForRowAt
方法比 estimatedRowHeight
属性更灵活,它可以为不同的行提供不同的预估值。这可以减少列表视图的抖动和滚动条问题。