状态栏高度变化处理

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
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

时间: 2024-10-09 20:18:20

状态栏高度变化处理的相关文章

Android如何获取系统高度、标题栏和状态栏高度

在android应用中,有时需要计算个View的位置,导致需要计算状态栏高度,标题栏高度等信息.为以后方便,在此做个简单记录. 晒代码前先了解一下android屏幕区域的划分,如下图(该图引用自此文http://www.iteye.com/topic/828830 ) 1. 屏幕区域的获取 [java] view plaincopy activity.getWindowManager().getDefaultDisplay(); 2.应用区域的获取 [java] view plaincopy R

布局(左边的div随着右边div的高度变化而变化)

今天同学问了一个左边div的高度随着右边div的高度变化而变化的问题.开始想了想有点蒙.中间试着用height:100%:试过发现并不可行,因为高度百分比必须有确切的祖先元素(即设置了px)才可以.由于今天晚上正在团建,回来都12点多了.然后怎么也睡不着就做做这个吧,发现一坐下来安心的想问题,竟然迎刃而解了. 我用到的方法是1父元素设置position:relative;2左边的div设置position:absolute;top:0;bottom:0;这个也是css3中flex布局的实现原理.

【转】Andorid获取状态栏高度

在应用开发中,有时我们需要用代码计算布局的高度,可能需要减去状态栏(status bar)的高度.状态栏高度定义在Android系统尺寸资源中status_bar_height,但这并不是公开可直接使用的,例如像通常使用系统资源那样android.R.dimen.status_bar_height.但是系统给我们提供了一个Resource类,通过这个类我们可以获取资源文件.下边是在Activity中获取的方法 public int getStatusBarHeight() { int resul

Android -- 状态栏高度

干货 Class<?> c = null; Object obj = null; Field field = null; int x = 0, sbar = 0; try { c = Class.forName("com.android.internal.R$dimen"); obj = c.newInstance(); field = c.getField("status_bar_height"); x = Integer.parseInt(field

iOS6 / iOS7 状态栏高度适配

问题原因:iOS7的状态栏(status bar)不再占用单独的20px,所以假设你在iOS6上的界面布局是正常的,那么到了iOS7上就会变成以下这个样子:             左边是iOS6界面布局,右边是iOS7界面布局.这时有人会想着把iOS7界面上控件总体向下移动20px,可是当Interface Builder Document改成Xcode 4.6时又变成了例如以下情况:             界面不会由于你在不同的Interface Builder Document值下设置不

多行文本框的高度变化

<!DOCTYPE html><meta charset="utf-8"><html><head> <title>多行文本框的高度变化</title> <script type="text/javascript" src="js/jquery.min.js"></script> <style type="text/css"&g

获取状态栏高度

Android中获取状态栏高度的两种方法: public static int getStatusHeight(Context context) { int statusHeight = 0; try { Class<?> clazz = Class.forName("com.android.internal.R$dimen"); Object object = clazz.newInstance(); int resourceId = Integer.parseInt(c

移动APP下拉刷新时下拉高度变化的函数模型

今天研究了下移动APP下拉刷新时,下拉高度变化的效果,发现有以下规律: y = arctan(x/maxY) * maxY, x >= 0

iphone状态栏高度?

  设备分辨率         状态栏高度           导航栏高度 标签栏高度 iPhone6 plus       1242×2208 px           60px               132px           147px iPhone6 750×1334 px 40px 88px 98px iPhone5/5s/5c 640×1136 px 40px 88px 98px iPhone4/4s 640×960 px 40px 88px 98px iPad3/4/Ai