iOS状态栏和导航栏适配

iOS状态栏和导航栏适配_第1张图片
屏幕快照 2017-12-27 16.35.57.png
1.简介:

如图:在一个App的页面中红色+蓝色是整个可见的区域,但是蓝色的区域的才是真正的内容展示区(各种信息的展示这个区域是包含了导航栏的)。

2.原理:

适配的根本目标就是获取蓝色的这部分的其实坐标。所以在项目的基类里面设置一个参数iosChangeFloat用来代表导航栏之上的距离。

3.系统和手机蓝色部分的情况:
3.1不同系统

在iOS7.0之后,苹果开始对ViewController 采用全屏布局,就是ViewController 是填满整个屏幕的,包括StatusBar(20)、NavigationBar(44)、TabBar(49)、ToolBar(44),
但是一般来说我们一般可以拖动的区域是在导航栏之下的界面,而且刷新的功能一般是隐藏在导航栏之下的,在整个项目适配的时候,一般需要布局的部分需要单独的区分出来,这个时候就需要获取下这个需要布局部分的位置了。

iOS状态栏和导航栏适配_第2张图片
屏幕快照 2017-12-27 16.22.14.png
3.2不同版本的手机

在iPhoneX这个布局又有了变化
状态栏高度由20pt变成44pt,留意这个距离就能避开“刘海”的尴尬,相应的导航栏以上变化64->88。


iOS状态栏和导航栏适配_第3张图片
屏幕快照 2017-12-27 16.28.46.png
       if (IOSVersion < 7.0) {
            self.iosChangeFloat = 0;
        }else{
            self.iosChangeFloat = 20;
        }        
         if (kDevice_iPhoneX) {
            self.iosChangeFloat = 44;
        }
4.总结:通过这个参数(iosChangeFloat)就可以轻松的找到屏幕中真正的显示的区域了,而不需要考虑不同系统和版本导致的页面的偏移问题了。在刚进行iPhoneX适配的时候,发现网上的很多的文档都是对UIScrollerView偏移的适配,但是我的项目没有出现这个问题,在这个主要是项目里面的导航栏是自定义了,所以没有出现网上的那种问题,其实为了适应苹果频繁的更新,最好是使用基本的控件对导航栏进行自定义。

你可能感兴趣的:(iOS状态栏和导航栏适配)