2018-09-06 ios 获取导航栏和状态栏高度,针对iPhoneX

转:http://www.cocoachina.com/ios/20180308/22505.html

因为iPhoneX的产生,原本的导航栏再也不是44了,那么会出现什么问题呢?在隐藏导航栏的页面,原本的高度要向上调整一个导航栏+状态栏的高度。那么iPhoneX的导航栏高度不是44了,我们需要手动获取,

有导航栏的,代码如下:

//获取状态栏的rect

CGRect statusRect = [[UIApplication sharedApplication] statusBarFrame];

//获取导航栏的rect

CGRect navRect = self.navigationController.navigationBar.frame;

那么导航栏+状态栏的高度

statusRect.size.height+navRect.size.height

是不是很简单!!!!

对于项目有的很多处都需要这个代码,可以给它写成宏定义。如下

方法一:

//获取导航栏+状态栏的高度

#define getRectNavAndStatusHight  self.navigationController.navigationBar.frame.size.height+[[UIApplication sharedApplication] statusBarFrame].size.height

方法二:(用了宏定义的 参数返回)

//获取导航栏+状态栏的高度

#define GET_RECT_NAVBAR_ADD_STATUS_HIGHT \

            ({\

                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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 板块方面:随着越来越多公司中报推出送转预期,中报高送转个股和超跌远端优质次新股(年报预高送),都可以关注,现在做高...
    龙之想阅读 234评论 0 0
  • 前几天朋友来日本玩, 我带着逛了几天。 临走时送了件小礼物给我。 还是蛮高兴的收下了。 确实很精致、也很简单,重量...
    小手抓抓抓阅读 251评论 0 0
  • 太阳热情的拥抱着夏天 夏天热情的拥抱了世界 姑娘的短裤越来越短 小伙子的短袖也消失不见 天空看不下去了 派了云彩拯...
    刘一北阅读 289评论 0 0