|
今天突然遇到了一个问题,就是在使用MJRefresh上拉加载没有数据时会一直请求数据,造成死循环。查阅了资料才知道是什么原因?
原因:iOS11中UITableView在reloadData时contentOffset发生了改变,这时候MJ监听了contentOffset的变化,就导致再一次的调用上拉加载,变成了循环调用.
iOS11之后UITableView默认开启了Self-Sizing,官方解释为:
大概就是说我们不再需要自己去计算cell的高度了,只要设置好这两个属性,约束好布局,系统会自动计算好cell的高度。IOS11以后,Self-Sizing默认开启,包括Headers, footers。如果项目中没使用estimatedRowHeight属性,在IOS11下会有奇奇怪怪的现象,因为IOS11之前,estimatedRowHeight默认为0,Self-Sizing自动打开后,contentSize和contentOffset都可能发生改变。可以通过以下方式禁用:
self.tableView.estimatedRowHeight = 0;
self.tableView.estimatedSectionHeaderHeight = 0;
self.tableView.estimatedSectionFooterHeight = 0;
在使用下拉加载的页面中添加这三个属性就可以了。
|
|