iOS 控制Status Bar的隐藏和显示

原创 2017年01月03日 11:25:41
1.在info.plist设置中,View controller-based status bar appearance的值要设置成YES,经测试当是NO的时候,接下来要做的事不会被执行。

2.在ViewController.m中添加(ViewController.m是创建项目时自动生成的rootViewController)
//控制状态栏显隐

- (UIViewController*)childViewControllerForStatusBarHidden{

    return  [[UIViewController alloc] init];

}


//控制状态栏样式

- (UIViewController*)childViewControllerForStatusBarStyle{

    return  [[UIViewController alloc] init];

}

由child controller 来控制状态栏的显隐和样式。
如果希望状态栏的样式是UIStatusBarStyleLightContent且在全局设置中已经设置好了,由于第1步的设置会导致全局设置无效,所以还要加上对样式的控制。

3.在yourChildViewContoller1.m中添加

//是否隐藏状态栏

- (BOOL)prefersStatusBarHidden{

    if () {

        return YES;//隐藏

    }

    return NO;//显示

}

yourChildViewContoller2.m中添加

- (UIStatusBarStyle)preferredStatusBarStyle{

    return UIStatusBarStyleLightContent;

}

yourChildViewContoller1yourChildViewContoller2可以是同一个,也可以是不同的



4.

在第3步中添加的方法会在app载入后立即执行,在后面的操作过程中是不会被执行的

当希望状态栏改变状态的时候,需要执行这个方法[self setNeedsStatusBarAppearanceUpdate];

如果在yourChildViewContoller1、yourChildViewContoller2中执行这个方法,是无效的.

状态栏只能由ViewController来控制,第2步中的设置相当于加了个代理,由代理来决定结果,但是要代理来执行还得由ViewController来发出命令,所以setNeedsStatusBarAppearanceUpdate方法得是ViewController来调用。

改成[[[[UIApplication sharedApplication] keyWindow] rootViewController] setNeedsStatusBarAppearanceUpdate];在代理的child controller中执行就OK了。

版权声明:本文为博主原创文章,未经博主允许可以转载,转载时请附上地址:https://youshaoduo.github.io/

详解 iOS navigationBar 的设置问题

在iOS7之后,self.navigationController.navigationBar.translucent = NO 把导航条这个属性设置为no之后,坐标怎么向下移动了64个像素点? 由于...
  • jeffasd
  • jeffasd
  • 2016年02月25日 16:37
  • 4207

iOS7隐藏状态栏 status Bar

iOS7中,不仅应用的风格有一定的变化,状态栏变化比较大,我们可以看到UIViewController的状态栏与导航栏基本是一体的。因此UIVIEWCONTROLLER的hide/show状态的方法也...
  • dqjyong
  • dqjyong
  • 2014年01月06日 00:03
  • 27802

iOS6 / iOS7 状态栏高度适配

问题原因:iOS7的状态栏(status bar)不再占用单独的20px,所以如果你在iOS6上的界面布局是正常的,那么到了iOS7上就会变成下面这个样子:             左边是iOS6界...
  • yuanbohx
  • yuanbohx
  • 2014年04月20日 11:21
  • 16728

IOS7隐藏状态栏 status Bar

IOS7中,不仅应用的风格有一定的变化,状态栏变化比较大,我们可以看到UIVIEWCONTROLLER的状态栏与导航栏基本是一体的。因此UIVIEWCONTROLLER的HIDE/SHOW状态的方法也...
  • u012242853
  • u012242853
  • 2014年08月26日 22:55
  • 395

iOS隐藏status bar原理

info.plist文件中,View controller-based status bar appearance项设为YES,则View controller对status bar的设置优先级高于a...
  • yuzhidu2012
  • yuzhidu2012
  • 2014年07月07日 20:44
  • 265

iOS7下隐藏status bar的详细研究

info.plist文件中,View controller-based status bar appearance项设为YES,则View controller对status bar的设置优先级高于a...
  • happyrabbit456
  • happyrabbit456
  • 2014年03月26日 12:50
  • 413

iOS7下隐藏status bar

info.plist文件中,View controller-based status bar appearance项设为YES,则View controller对status bar的设置优先级高于a...
  • xuxunno1
  • xuxunno1
  • 2014年06月22日 21:52
  • 370

iOS7隐藏状态栏 status Bar

IOS7中,不仅应用的风格有一定的变化,状态栏变化比较大,我们可以看到UIVIEWCONTROLLER的状态栏与导航栏基本是一体的。因此UIVIEWCONTROLLER的HIDE/SHOW状态的方法也...
  • lmyuanhang
  • lmyuanhang
  • 2015年06月27日 15:28
  • 360

iOS7隐藏状态栏 status Bar

IOS7中,不仅应用的风格有一定的变化,状态栏变化比较大,我们可以看到UIVIEWCONTROLLER的状态栏与导航栏基本是一体的。因此UIVIEWCONTROLLER的HIDE/SHOW状态的方法也...
  • andy_jiangbin
  • andy_jiangbin
  • 2014年02月25日 15:56
  • 446

iOS7隐藏状态栏 status Bar

IOS7中,不仅应用的风格有一定的变化,状态栏变化比较大,我们可以看到UIVIEWCONTROLLER的状态栏与导航栏基本是一体的。因此UIVIEWCONTROLLER的HIDE/SHOW状态的方法也...
  • investzhu
  • investzhu
  • 2015年05月04日 09:28
  • 334
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS 控制Status Bar的隐藏和显示
举报原因:
原因补充:

(最多只允许输入30个字)