最近遇到一个问题, 需要定位到 TableView 的某一行, 历史代码是使用
1 | - (CGRect)rectForRowAtIndexPath:(NSIndexPath *)indexPath; |
获取到对应的cell 在 TableView 上的位置, 然后再根据业务做了一些简单的计算, 最后使用
1 | - (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated; |
跳转到最终的位置.
但是由于这个业务比较复杂, 为了性能, 开启了预估行高(estimatedHeightForRowAtIndexPath), 实际上, TableViewCell 的高度也根据业务各不一样, 预估值也与实际情况出入较大, 导致上面的 setContentOffset 跳到了不正确的行高.