MJRefresh适配ios11以及iPhoneX

这里写链接内容虽然还没钱买iPhone8和iPhoneX,但是新版的Xcode9已经有相关模拟器了,一打开模拟器惊呆了,那些自定义导航栏的地方都出问题了,原因是iPhoneX状态栏由以前的20->44所以产生了一些问题,但是这边我们不关注这个问题,大多数界面都有的刷新都出了问题,这就很尴尬了,看了很多文章。其中iOS 11 安全区域适配总结这篇文章写得很是详细

大多数文章提供的解决方案都是直接将新增属性contentInsetAdjustmentBehavior直接设置成UIScrollViewContentInsetAdjustmentNever类型,然后再去重新设置contentInset。但是个人感觉这种方式不太好,因为系统推荐的是automatic模式,事实证明不跟随系统步伐迟早很留坑。所以首先想到的是修改mj的源码,经过一番测试,目前暂时未发现问题:

下拉刷新上拉刷新

就在昨天我改完之后发现mj也修改了源码,但是我们思路不太一样,mj是通过修改contentInset的取值,contentInset.top以及contentInset.bottom。我是使用的时候做系统判断,不得不说mj这样该修改的代码量最少,但是也带来一个问题:改变了系统原本变量的意义,而且对赋值取值也优化的不全面。

- (void)setMj_insetT:(CGFloat)mj_insetT
{
    UIEdgeInsets inset = self.contentInset;
    inset.top = mj_insetT;
#ifdef __IPHONE_11_0
    if(@available(iOS 11.0, *)){
        inset.top -= (self.adjustedContentInset.top - self.contentInset.top);
    }
#endif
    self.contentInset = inset;
}

例如这段代码,你设置 self.tableView.mj_insetT = 50本来是想往下偏移50,adjustedContentInset:{88, 0, 78, 0},这样一设置就会变成self.tableView上移38这并不是我们想得到的,考量了一下,我还是决定沿用我自己的修改方法。下载链接:MJRefresh兼容IOS11 demo

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值