iOS获取TableView的ContentSize不准确及如何准确获取TableView的contentSize

编程知识 更新时间:2023-04-05 05:57:44

获取contentSize不准确的原因有几个:

1. tableView没有渲染完成

比如tableView.reloadData()后马上取contentSize肯定不准确,再比如ViewController生命周期还没有走完等。

解决办法:1). 在正确的时机取(看似是废话,但如果你深入了解controller和view生命周期,建议从根本上解决);

                  2). self.view.layoutIfNeeded(),强制layout,然后再获取;

                  3). DispatchQueue.main.asyncAfter个几百毫秒再取(这种方式不利于控制时序,不建议). 

2. tableView使用了自动行高,estimatedRowHeight == UITableViewAutomaticDimension

           可以看到文档中也对estimatedRowHeight对contentOffset和contentSize影响的描述,直接读取的值可能是不正确的.

解决方法:estimatedRowHeight = 0. 有人说我从来没设置过estimatedRowHeight呀,看了文档,The default value is automaticDimension, which means that the table view selects an estimated height to use on your behalf. Set the value to 0 to disable estimated heights. 又有人说,我项目中必须用自适应行高怎么办?那只能重写contentSize计算方式了,或者通过根据数据手动计算contentSize,或者通过别的方式绕过contentSize来满足需求了。

更多推荐

iOS获取TableView的ContentSize不准确及如何准确获取TableView的contentSize

本文发布于:2023-04-05 05:57:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/70fcd87d063ffb59d0e89db98bb1574b.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:不准确   准确   TableView   iOS   contentSize

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 45137文章数
  • 14阅读数
  • 0评论数