ios 获取导航栏和状态栏高度,针对iPhoneX
Posted brave-sailor
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios 获取导航栏和状态栏高度,针对iPhoneX相关的知识,希望对你有一定的参考价值。
因为iPhoneX的产生,原本的导航栏再也不是44了,那么会出现什么问题呢?在隐藏导航栏的页面,原本的高度要向上调整一个导航栏+状态栏的高度。那么iPhoneX的导航栏高度不是44了,我们需要手动获取,
有导航栏的,代码如下:
1
2
3
4
5
6
|
//获取状态栏的rect CGRect statusRect = [[UIApplication sharedApplication] statusBarFrame]; //获取导航栏的rect CGRect navRect = self.navigationController.navigationBar.frame; 那么导航栏+状态栏的高度 statusRect.size.height+navRect.size.height |
是不是很简单!!!!
对于项目有的很多处都需要这个代码,可以给它写成宏定义。如下
方法一:
1
2
|
//获取导航栏+状态栏的高度 #define getRectNavAndStatusHight self.navigationController.navigationBar.frame.size.height+[[UIApplication sharedApplication] statusBarFrame].size.height |
方法二:(用了宏定义的 参数返回)
1
2
3
4
5
6
|
//获取导航栏+状态栏的高度 #define getRectNavAndStatusHight ({ CGRect rectStatus = [[UIApplication sharedApplication] statusBarFrame]; CGRect rectNav = self.navigationController.navigationBar.frame; ( rectStatus.size.height+ rectNav.size.height); }) |
下面说说没有导航栏(对于模态视图推出):
#define isPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)
首先判断机型是不是iPhoneX,然后
如果是iPhoneX返回88 如果不是64
以上是关于ios 获取导航栏和状态栏高度,针对iPhoneX的主要内容,如果未能解决你的问题,请参考以下文章