转载自:  https://www.jianshu.com/p/66b09475198d

问题分析

   在完美适配iOS11和iPhone X上的两套方案文章,我们已基本完成了UIScrollview的适配问题,但还会存在一个问题,当tableview/collectionView 使用上拉加载更多时,因为调整了contentInset (0,0,34,0),造成“上拉加载更多”文本显示在HomeIndicator 区域,并与HomeIndicator的黑色条重叠,仅是视图显示问题,并不涉及业务逻辑问题。我们可以调整文本向下偏移,这个问题是与MJRefresh的没有适配iPhone X有一定关系,但是请勿直接改动MJRefresh。

查找MJRefreshFooter我们会发现

/** 忽略多少scrollView的contentInset的bottom */
@property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetBottom;
MJRefreshHeader也有对应的属性
/** 忽略多少scrollView的contentInset的top */
@property(assign,nonatomic)CGFloatignoredScrollViewContentInsetTop;
在此,我们通过ignoredScrollViewContentInsetBottom 修正contentInset引起的问题。

参考处理方法

   对MJRefresh 封装的一个分类UICollectionView+Refresh 中

/**
添加footerRefresh
@param target 加载更多相响应者
@param action 加载更多的响应方法
@param isExtendHomeIndicator scrollview是否拓展到HomeIndicator区域
*/
- (void)yg_addFooterViewWithTarget:(id)target
action:(SEL)action
isExtendHomeIndicator:(BOOL)isExtendHomeIndicator
{
MJRefreshBackNormalFooter*loadFooter = [MJRefreshBackNormalFooterfooterWithRefreshingTarget:targetrefreshingAction:action];
[loadFootersetTitle:@"上拉加载更多"forState:MJRefreshStateIdle];
[loadFootersetTitle:@"放手加载更多"forState:MJRefreshStatePulling];
[loadFootersetTitle:@"加载中..."forState:MJRefreshStateRefreshing];
loadFooter.stateLabel.font= [UtilgetFontWithSize:FONT15
weight:FontWeightDefault
fontOption:FontEqual];
loadFooter.stateLabel.textColor= [UtiltransferStringToColor:contentColor];
//iPhone X 并且 scrollview是否拓展到HomeIndicator区域
if(IS_IPHONE_X_YG&& isExtendHomeIndicator) {
UIViewController*currentVC = [UtilcurrentViewController];
//不存在tabBarController或 不显示tabbar 或已做contentInset调整,需要修正
if(!currentVC.tabBarController|| currentVC.hidesBottomBarWhenPushed || self.contentInset.bottom == IPHONE_X_HOME_HEIGHT) {
//调整忽略多少scrollView的contentInset的bottom
loadFooter.ignoredScrollViewContentInsetBottom=IPHONE_X_HOME_HEIGHT*0.75;
}
}
self.mj_footer= loadFooter;
}

   需要添加上拉刷新的地方调用该方法即可适配。如有更好方式,或遇到新的问题,欢迎评论,一起探讨完善!

   强调下,第三方库尽量用Pod管理,不到万不得已千万不要去改动第三方,这不仅仅是实力问题,主要是不便维护,即使不得要改动,请对三方库做下封装,用继承等形式去改写(分类添加新方法也行,禁用分类重写原类的方法)。项目的私有库也可以用Pod管理(注意各个APP间的版本控制)。

作者:给策
链接:https://www.jianshu.com/p/66b09475198d
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

iPhone X适配之MJ上拉加载更多的适配相关推荐

  1. MJ“点击或上拉加载更多”问题

    MJ作为下拉加载和上拉刷新的三方库,特别好用.最近在用的时候发现网上有说MJ"点击或上拉加载更多"有bug,什么情况呢? 下拉加载更多 self.collectionView.mj ...

  2. Android滑动冲突解决方式(下拉刷新上拉加载更多,适配RecyclerView/ListView/ScrollView)

    一.Android事件的分发机制 这里需要了解下Andorid事件的分发机制.事件分发一般是针对一组事件,即ACTION_DOWN > ACTION_UP 或 ACTION_DOWN > ...

  3. Android RecyclerView封装下拉刷新与上拉加载更多

    1 scanlistlibrary 基础组件说明(基于 RecyclerView的封装) 基本数据列表(支持下拉刷新与上拉加载更多) 九宫格数据显示封装(支持下拉刷新与上拉加载更多) 瀑布流数据显示封 ...

  4. android官方上拉加载,Android-RecycleView上拉加载更多

    5.0之后 推出的RecycleView来代替ListView,可以说RecycleView和ListView比起有过之而无不及,下面这篇博客主要来实现RecyclerView的上拉加载更多功能. 基 ...

  5. android SwipeRefreshLayout 增加上拉加载更多

    2019独角兽企业重金招聘Python工程师标准>>> 大家可能有的没有swipeRefreshLayout这个类,简单说一下,这是v4包里面的,19.1版本的时候就有了,但是当时的 ...

  6. Flutter开发之ListView下拉刷新上拉加载更多(35)

    在Flutter开发之ListView组件(21) 文章中,我们了解了ListView组件的基本使用.但是数据比较少,没有涉及分页加载.而实际开发中,下拉刷新和分页加载几乎是所有APP的标配.在iOS ...

  7. 【Flutter】ListView 列表高级功能 ( ScrollController 上拉加载更多 )

    文章目录 一.ScrollController 上拉加载更多 二.ScrollController 使用流程 三.ScrollController 判定滑动到底部 四.完整代码示例 五.相关资源 一. ...

  8. Android项目:使用pulltorefresh开源项目扩展为下拉刷新上拉加载更多的处理方法,监听listview滚动方向...

    很多android应用的下拉刷新都是使用的pulltorefresh这个开源项目,但是它的扩展性在下拉刷新同时又上拉加载更多时会有一定的局限性.查了很多地方,发现这个开源项目并不能很好的同时支持下拉刷 ...

  9. ajax 下拉刷新 上拉加载更多,局部刷新iscroll控件的具体使用(下拉刷新,上拉加载更多)...

    标签下,这是调用iscroll的必要条件,否则会出现不能刷新或者不能滑动页面的情况.此外还有商量刷新及下拉刷新的标签,在iscroll中有这两个标签的样式,若不想用默认的样式,也可通过覆盖的方式添加其 ...

最新文章

  1. 前端必须会的基本知识题目
  2. 从系统的启动过程分析,为什么我们划分分区的时候 /sbin 、/bin、/lib、/dev不能做为独立的分区?...
  3. 大数据互联网架构阶段 Redis(二)
  4. java选择排序解释_选择排序
  5. android 软件盘弹回去的最好体验,Android 软键盘弹出 日常填坑
  6. 了解分布式系统和分布式系统中需要掌握的痛点
  7. 交互设计软件 html,5款优秀的交互动效设计软件推荐,让你用到爽
  8. python量化需要什么基础_真格量化入门课程——②真格量化Python策略编写思路
  9. matlab 矩阵分行标准化,matlab如何将矩阵标准化 命令是什么?
  10. 数据分析模型 第九章
  11. R - 小鑫の日常系列故事(七)——小纸条
  12. Android Studio 必备技巧:TODO 用法及自定义 TODO
  13. C#实现多人语音聊天
  14. 安卓版旅行青蛙三叶草修改教程
  15. 在自行下载的背景图片上写字
  16. 软件开发人员 梦想最大的阻碍:毒、赌、黄
  17. 【C语言】C语言笔记
  18. C# 之AutoCAD标注样式定义
  19. 哈希消息认证码HmacSHA256-javascript版
  20. 一文了解Jeff Bezos,电商与公有云的“世界首富”

热门文章

  1. win7计算机左边桌面选项没,win7系统桌面左下角开始菜单不见了的解决方法
  2. [搬家]打造自己的嵌入式系统,防火墙或路由器
  3. python实现http请求并发_Python复习笔记(十)Http协议--Web服务器-并发服务器
  4. springboot(十)SpringBoot消息中间件RabbitMQ
  5. 无限防 助你一臂之力 !!
  6. 伙伴分配器的内核实现
  7. 全球及中国标签印刷行业十四五发展形势与需求规模预测报告2022版
  8. jax指标的用法_股票指标参数用法.doc
  9. koreader如何选择kindle的版本
  10. 线性稳压器和开关稳压器比较