contentInsetAdjustmentBehavior各个值之间的区别

  • 时间:2017-11-24
  • 分类:IOS开发
  • 1852 人浏览
[导读]iOS11也出了不少时候了网上说适配的文章一大堆。关于contentInsetAdjustmentBehavior这个参数之间的区别,好像没什么人能说明。

iOS11也出了不少时候了网上说适配的文章一大堆。
关于contentInsetAdjustmentBehavior这个参数之间的区别,好像没什么人能说明。
往下看的前提是你已经知道什么是安全区域,没看明白这个请出门左转WWDC2017编号204(16分20秒开始)。

以下内容是基于腾讯Bugly的iOS 11 安全区域适配总结内容扩展而来。(原文网址:https://mp.weixin.qq.com/s/W1_0VrchCO50owhJNmJnuQ)

这里写了个Demo目的是解释清楚contentInsetAdjustmentBehavior这个参数的值都是干啥的。
这个Demo的基本原则就是列出所有ScrollView的ContentSize和SaveArea的关系。

 

github地址:

https://github.com/biosli/ScrollViewContentInsetAdjustmentBehaviorDemo

 

基础代码

 

简单叙述页面关系:
就是一个ViewController里面放一个ScrollView,ScrollView里面包含了一个UIImageView。aaaa是张大图。

 

一、UIScrollViewContentInsetAdjustmentScrollableAxes

例1:

例1图:

这两个地方忽略了安全区域。

 

例2:

 例2图:

被拉长了,纵向可以滚动,横向宽度不够不能滚动。

红色是横向方向,不可滚动,安全区域被忽略。

 

例3:  

例3图:

强制横向滚动,两个方向的安全区域都会被考虑到。

 

二、UIScrollViewContentInsetAdjustmentAutomatic

例图:

图片很小,不够撑满屏幕,但是用这个参数,会空出上下方向的安全区域。

其他的行为与UIScrollViewContentInsetAdjustmentScrollableAxes一致。

 

三、UIScrollViewContentInsetAdjustmentNever

例图:

Never了就是都不考虑安全区域了。

 

四、UIScrollViewContentInsetAdjustmentAlways

例图:

不管内容够不够大,全部考虑安全区域。

(对比UIScrollViewContentInsetAdjustmentScrollableAxes例1和UIScrollViewContentInsetAdjustmentAutomatic例子)

 

以下是适配建议:

对于完全自定义页面的安全区域是个碍事的东西,把ScrollView(及子类)的contentInsetAdjustmentBehavior设置成Never,自己控制每一个细节。

对于没有横屏需求的同学,系统默认的UIScrollViewContentInsetAdjustmentAutomatic是个好选择,就不用使用者自己修改了。

对于有横屏需求的同学,建议使用UIScrollViewContentInsetAdjustmentAlways,横屏的时候不会被“刘海”干扰。

 

PS:后面是一些有趣的阴谋论,关于为什么苹果放弃了之前的automaticallyAdjustsScrollViewInsets而强制使用新的SafeArea。

iOS 11是6月WWDC发布的,那时候这个接口(automaticallyAdjustsScrollViewInsets)就被禁掉了。9月份iPhoneX发布。

来源:本文为线上采编,如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除!