状态栏高度变化处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了状态栏高度变化处理相关的知识,希望对你有一定的参考价值。

ios中的状态栏的正常高度是20,但并不是固定高度的,至少在通话中和有热点连接时,它的高度就会变成40。这时APP的UI会整体下移,造成UI显示异常。

说完了处理这个东西的重要性,那么做起来是否简单呢?

  • 问题1:怎么获取状态栏高度?
    状态栏的高度并非永远都是20,当有热点连接或者通话时,它的高度就会变成40。所以取得状态栏高度的标准方法如下,可以用宏来封装。
    [UIApplication sharedApplication].statusBarFrame.size.height
  • 问题2:怎么知道状态栏发生了变化?
    是通知。

    UIApplicationWillChangeStatusBarFrameNotification
    UIApplicationDidChangeStatusBarFrameNotification

    我们可以监听其中某个通知,然后相应的去改变当前视图的布局。

  • 问题3:是不是需要每个页面都要去注册通知?
    这个问题应该具体问题具体分析,但如果真的需要一个一个页面去改,我觉得肯定是程序结构出了问题。就我目前的项目而言,只是在根容器类中加了通知并处理了底部的tabbar。其他页面虽然有时也有问题,但很多都是自身实现方式有问题,和状态栏变化没有直接关系。

- (void)statusBarFrameWillChange:(NSNotification*)notification
{
    [self hideTabbar:self.statusBarHidden animated:YES];
}



文/iMinjie(简书作者)
原文链接:http://www.jianshu.com/p/8c8303f7d439
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

 

以上是关于状态栏高度变化处理的主要内容,如果未能解决你的问题,请参考以下文章

使用 WantsFullScreenLayout 应用程序处理扩展高度状态栏的最佳实践?

仅在一个片段中隐藏状态栏并在其他片段中显示

Android 全屏片段不显示导航和状态栏后面的元素

如何修改 Android 状态栏高度

android状态栏高度是多少

ios 获取导航栏和状态栏高度,针对iPhoneX