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),
但是一般来说我们一般可以拖动的区域是在导航栏之下的界面,而且刷新的功能一般是隐藏在导航栏之下的,在整个项目适配的时候,一般需要布局的部分需要单独的区分出来,这个时候就需要获取下这个需要布局部分的位置了。
文章图片
屏幕快照 2017-12-27 16.22.14.png 3.2不同版本的手机
【iOS状态栏和导航栏适配】在iPhoneX这个布局又有了变化
状态栏高度由20pt变成44pt,留意这个距离就能避开“刘海”的尴尬,相应的导航栏以上变化64->88。
文章图片
屏幕快照 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偏移的适配,但是我的项目没有出现这个问题,在这个主要是项目里面的导航栏是自定义了,所以没有出现网上的那种问题,其实为了适应苹果频繁的更新,最好是使用基本的控件对导航栏进行自定义。
推荐阅读
- 2020-04-07vue中Axios的封装和API接口的管理
- iOS中的Block
- 停下“忙乱”的状态
- 记录iOS生成分享图片的一些问题,根据UIView生成固定尺寸的分享图片
- IDEA|IDEA 创建工程
- Java基础-高级特性-枚举实现状态机
- 2019-08-29|2019-08-29 iOS13适配那点事
- Hacking|Hacking with iOS: SwiftUI Edition - SnowSeeker 项目(一)
- iOS面试题--基础
- 老年状态