ios开发之--MJRefresh上拉加载的时候,tableview会向上偏移
1,出现这种情况的原因:
这个应该是UITableView最大的改变。我们知道在iOS8引入Self-Sizing之后,我们可以通过实现estimatedRowHeight相关的属性来展示动态的内容,实现了estimatedRowHeight属性后,得到的初始contenSize是个估算值,是通过estimatedRowHeight乘以 cell的个数得到的,并不是最终的contenSize,只是当前屏幕能够显示的cell个数,滑动时,tableView不停地得到新的cell,更新自己的contenSize。
Self-Sizing在iOS11下是默认开启的,Headers, footers, and cells都默认开启Self-Sizing,所有estimated高度默认值从iOS11之前的 0改变为UITableViewAutomaticDimension:
如果目前项目中没有使用estimateRowHeight属性,在iOS11的环境下就要注意了,因为开启Self-Sizing之后,tableView是使用estimateRowHeight属性的,这样就会造成contentSize和contentOffset值的变化,如果是有动画是观察这两个属性的变化进行的,就会造成动画的异常,因为在估算行高机制下,contentSize的值是一点点地变化更新的,所有cell显示完后才是最终的contentSize值。因为不会缓存正确的行高,tableView reloadData的时候,会重新计算contentSize,就有可能会引起contentOffset的变化。
2,解决方案,代码如下:
-(void)creatUI
{
communTableV = [[UITableView alloc]initWithFrame:CGRectMake(, NavHeight, KscreenW, KscreenH-NavHeight-bottomHeight-) style:UITableViewStylePlain];
communTableV.delegate = self;
communTableV.dataSource = self;
communTableV.tableFooterView = [[UIView alloc]init];
communTableV.tableHeaderView = [self thirdV];
communTableV.estimatedRowHeight = ; communTableV.estimatedSectionFooterHeight = ; communTableV.estimatedSectionHeaderHeight=;
if (@available(iOS 11.0, *)) {
communTableV.contentInsetAdjustmentBehavior= UIScrollViewContentInsetAdjustmentNever;
} else {
// Fallback on earlier versions
}if (@available(iOS 11.0, *)) {
communTableV.contentInsetAdjustmentBehavior= UIScrollViewContentInsetAdjustmentNever;
} else {
// Fallback on earlier versions
} [self.view addSubview:communTableV];
}
仅做记录,别问我为什么下面的判断了两次,是警告点出来的!
ios开发之--MJRefresh上拉加载的时候,tableview会向上偏移的更多相关文章
- MJRefresh(上拉加载下拉刷新)
		整理自:https://github.com/CoderMJLee/MJRefresh#%E6%94%AF%E6%8C%81%E5%93%AA%E4%BA%9B%E6%8E%A7%E4%BB%B6%E ... 
- 【已解决】iOS11使用MJRefresh上拉加载结束tableView闪动、跳动的问题
		更新提示: [2018年11月20日更新] 经过放置在项目中运行发现,如果在快速滚动tableview的时候会在下面这行代码中崩溃(慢慢的滚动是没关系的-): CGFloat cellHeight = ... 
- 微信小程序开发——列表分页上拉加载封装实现(订单列表为例,订单状态改变后刷新列表滚动位置不变)
		业务需求: 业务需求是给订单列表添加分页功能,也就是上拉加载这种每次只请求加载固定数量的数据. 需求分析: 对业务来说就是简单的分页上拉加载,但是对于技术实现来说,除了要处理分页数据的累加加载,还要处 ... 
- iOS-tableView上拉加载更多后,界面出现偏移
		问题描述: 在做tableview的界面展示的时候,cell用自动计算高度的.但是在上拉加载更多的时候,数据请求完后,刷新界面,界面的顶部就出现了偏移 分析: 查阅资料后发现,当tableView的c ... 
- iOS开发之--iPhone X 适配:MJRefresh上拉加载适配
		问题如下图: 出现原因,phoneX系列手机下方多了34像素的工作区域,所以需要对x全系列手机坐下适配, 解决如下: self.tableView.mj_footer.ignoredScrollVie ... 
- iOS MJRefresh上拉加载更多
		1.导入MJRefresh包 2.在类中引入:#import "MJRefresh.h" 3.添加footerView 添加加载更多的UI样式: MJRefreshAutoNorm ... 
- iOS开发 XML解析和下拉刷新,上拉加载更多
		iOS开发 XML解析和下拉刷新,上拉加载更多 1.XML格式 <?xml version="1.0" encoding="utf-8" ?> 表示 ... 
- iOS MJRefresh下拉刷新(上拉加载)使用详解
		下拉刷新控件目前比较火的有好几种,本人用过MJRefresh 和 SVPullToRefresh,相对而言,前者比后者可定制化.拓展新都更高一点. 因此本文着重讲一下MJRefresh的简单用法. 导 ... 
- 【FastDev4Android框架开发】RecyclerView完全解析之下拉刷新与上拉加载SwipeRefreshLayout(三十一)
		转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/49992269 本文出自:[江清清的博客] (一).前言: [好消息] ... 
随机推荐
- 【驱动】——错误: 初始值设定项里有未知的字段‘ioctl’
			这个错误网上搜索发现3.0.0.15版本内核 file_operation结构体已经删除了ioctl函数,取代的是: long (*unlocked_ioctl) (struct file *, un ... 
- netable 禁用拖动
			nestable在点击的时候,有一个拖动的状态被触发,会导致你给nestable上加的链接都会无效. 只要在最外层的li里加入一个class为:dd-nodrag,就不会被触发了.然后你在子菜单中就可 ... 
- 微信小程序滚动Tab实现左右可滑动切换
			--------------------------------------------------------wxml---------------------------------------- ... 
- maven-parent的pom.xml配置
			//-------------------------------------------system-parent------------------------------------------ ... 
- JS不同浏览器图片载入处理
			//不同浏览器图片加载判断 p.loadImgVerify = function(oimg,fn){ //载入发起请求 加入JS单线程队列事件(当状态满足时候执行些事件) if (qp_shared. ... 
- hbase分页应用场景及分页思路与代码实现
			转自:http://www.aboutyun.com/forum.php?mod=viewthread&tid=7030&extra=page=1 可以带着下面问题来阅读1.hbase ... 
- Python之进度条
			pip install tqdm from tqdm import tqdm,trange import time for char in tqdm(['a','b','c','d']): time. ... 
- 损失函数Center Loss 代码解析
			center loss来自ECCV2016的一篇论文:A Discriminative Feature Learning Approach for Deep Face Recognition. 论文链 ... 
- java 5.0引入的新特性-枚举
			概念 首先,枚举并不是一种新技术,而是一种基础数据类型.它隶属于两种基础类型中的值类型,如下: 2. 为什么要有枚举 枚举在真正的开发中是非常常用的,它的作用很简单也很纯粹:它定义了一种规范,就是要 ... 
- 使用ClaimsIdentity来实现登录授权
			背景:以前做登录时用的都是FormsAuthentication.SetAuthCookie(model.UID, IsRemeber),但是有一个不好,不能存储多个值,有时候我们既想存储登录用户的U ... 
