iOS状态栏和导航栏适配

iOS状态栏和导航栏适配
文章图片
屏幕快照 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状态栏和导航栏适配
文章图片
屏幕快照 2017-12-27 16.22.14.png 3.2不同版本的手机 【iOS状态栏和导航栏适配】在iPhoneX这个布局又有了变化
状态栏高度由20pt变成44pt,留意这个距离就能避开“刘海”的尴尬,相应的导航栏以上变化64->88。

iOS状态栏和导航栏适配
文章图片
屏幕快照 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偏移的适配,但是我的项目没有出现这个问题,在这个主要是项目里面的导航栏是自定义了,所以没有出现网上的那种问题,其实为了适应苹果频繁的更新,最好是使用基本的控件对导航栏进行自定义。

    推荐阅读