XCode9 + iOS11环境下UIScrollView出现的头部偏移问题

对于XCode9 + iOS11环境下 UITableView、UIScrollView向下偏移的问题
iOS11增加了安全区域:
SafeAreaInsets值
在使用系统的navigationBar的情况下:
SafeAreaInsets值为(64,0,0,0)
在未使用或者navigationBar设置为隐藏的时候:
SafeAreaInsets值为(20,0,0,0)
如果也使用了系统的tabbar:
SafeAreaInsets值为(64,0,49,0)或(20,0,49,0)
解决办法一:
根据iOS11新增的两个属性:adjustContentInset 和 contentInsetAdjustmentBehavior
该方式可以解决WKWebView偏移的一些问题

    if (@available(iOS 11.0, *)) {
        self.additionalSafeAreaInsets = UIEdgeInsetsMake(0, 0, 0, 0);
        // 如果使用了navigationBar隐藏的情况
        // self.navigationController.additionalSafeAreaInsets = UIEdgeInsetsMake(-20, 0, 0, 0);
    } else {
        self.automaticallyAdjustsScrollViewInsets = false;
    }

办法二:
根据取代automaticallyAdjustsScrollViewInsets属性的contentInsetAdjustmentBehavior属性

    if (@available(iOS 11.0, *)) {
        self.webView.scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
        // 设置内边距
        self.webView.scrollView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0);
        // 设置滚动条的内边距
        self.webView.scrollView.scrollIndicatorInsets = self.webView.scrollView.contentInset;
    } else {
        self.automaticallyAdjustsScrollViewInsets = false;
    }

@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
iOS11 中, UIViewController的automaticallyAdjustsScrollViewInsets属性已经不再使用,我们需要使用UIScrollView的 contentInsetAdjustmentBehavior 属性来替代它.
UIScrollViewContentInsetAdjustmentBehavior 是一个枚举类型,值有以下几种:
automatic 和scrollableAxes一样,scrollView会自动计算和适应顶部和底部的内边距并且在scrollView 不可滚动时,也会设置内边距.
scrollableAxes 自动计算内边距.
never不计算内边距
always 根据safeAreaInsets 计算内边距
很显然,我们这里要设置为 never

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 适配iOS11 🍎苹果官方文档🍎苹果官方视频为了挣钱...哦😯不是,为了广大中国的开发者,苹果官方文档出了好多中文...
    philiha阅读 4,860评论 1 50
  • 随着苹果 iOS11系统的发布,我也在第一时间将手机系统更新,sb Xcode也更新到了最新版本。在运行公司项目的...
    kikido阅读 14,751评论 0 7
  • 苹果公司于2017年9月13日凌晨发布了两款新的手机—— iPhon 8与iPhone X,作为全新的屏幕样式 i...
    LearningCoding阅读 11,340评论 2 6
  • 前言 苹果WWDC开发者大会上,终于发布了大家期待已久的iOS 11,有些新特性功能确实出人意料。不过大的方面苹果...
    Mr_Say_Yes阅读 8,646评论 6 15
  • 有一些话 想等一个 能一起喝酒的人 喝多了 借着酒劲儿 说出来 话已经越酿越少了 没剩几句 能喝酒的人 还迟迟没有...
    清风2015阅读 2,885评论 0 4

友情链接更多精彩内容