适配iOS11&iPhone X

本文介绍了解决iOS11上MJRefresh下拉刷新错乱的问题,包括如何调整UIScrollView的contentInsetAdjustmentBehavior属性以修复refreshheader一直显示在页面顶部的现象,并提供了针对iPhone X适配的建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MJRefresh下拉刷新错乱(refreshheader 一直在页面 上面显示)

如图
这里写图片描述

automaticallyAdjustsScrollViewInsets 在 iOS11 失效。

@property(nonatomic,assign) BOOL automaticallyAdjustsScrollViewInsets API_DEPRECATED_WITH_REPLACEMENT("Use UIScrollView's contentInsetAdjustmentBehavior instead", ios(7.0,11.0),tvos(7.0,11.0)); // Defaults to YES

所以

    self.automaticallyAdjustsScrollViewInsets = NO;
 if (@available(iOS 11.0, *)){
        if ([self.bottomScrollView respondsToSelector:@selector(setContentInsetAdjustmentBehavior:)]) {
            [self.bottomScrollView setContentInsetAdjustmentBehavior: UIScrollViewContentInsetAdjustmentNever];
        }

    }

如果在项目中,有很多页面有 scrollView 或这其子类 刷新等
那么直接采用下面的方法

if (@available(iOS 11.0, *)){
        [[UIScrollView appearance] setContentInsetAdjustmentBehavior:UIScrollViewContentInsetAdjustmentNever];
    }

因为项目中用到statusbar的设置,所以导致下面页面显示不对

这里写图片描述

修改UINavigationBar+Awesome.m 文件中self.overlay = [[UIView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.bounds), CGRectGetHeight(self.bounds) + 20)];

修改:


        self.overlay = [[UIView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.bounds), CGRectGetHeight(self.bounds) + [[UIApplication sharedApplication] statusBarFrame].size.height)];

iPhone x 的改变

statusbar : 20 –>44
tabbar : 49 –> 83
这里注意一下:
如果写固定的值的话,那么现在工作来了。666
所以如果要获取 statusbar 的 frame : [[UIApplication sharedApplication] statusBarFrame]
用系统的获取方法,可以以不变应万变、

这里写图片描述

滑动之后
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值