隐藏状态栏statusbar

在iOS7以后,隐藏状态栏只需要在根controller中添加

-(BOOL)prefersStatusBarHidden{
    return YES;
}

即可。但在有UINavigationController和UITabbarController时,在设置rootViewController后

//MainViewController为UITabbarController型
MainViewController *mainVC = [[MainViewController alloc]init];
UINavigationController *naviVC = [[UINavigationController alloc]initWithRootViewController:mainVC];
self.window.rootViewController = naviVC;

在MainViewController中想隐藏状态栏,但在该controller设置时无效。

在网上查了很多资料,甚至给UINavigtionController增加category,并在所需controller中引入category后仍不起作用。如下:

//.h文件
@interface UINavigationController (StatusBar)

-(BOOL)prefersStatusBarHidden;

@end

//.m文件
@implementation UINavigationController (StatusBar)

-(BOOL)prefersStatusBarHidden{
    return [[self topViewController] prefersStatusBarHidden];
}

@end

最后恍然大悟,必须在rootController中设置prefersStatusBarHidden为YES才可以。
在UITabbarController中,还需添加子controller

[self addChildViewController:childController];

所以就需要在这些子controller中设置prefersStatusBarHidden为YES才有效。绕了一大圈……

时间: 2024-08-25 18:13:44

隐藏状态栏statusbar的相关文章

iOS7隐藏状态栏 statusBar

转:http://blog.csdn.net/dqjyong/article/details/17896145 评:通过这点变化,可以看出苹果倾向于使用delegate取代全局变量. IOS7中,不仅应用的风格有一定的变化,状态栏变化比较大,我们可以看到UIVIEWCONTROLLER的状态栏与导航栏基本是一体的.因此UIVIEWCONTROLLER的HIDE/SHOW状态的方法也跟其他版本的不一样了. 在IOS7以前的版本,HIDE/SHOW是通过以下代码实现 [cpp] view plain

张高兴的 UWP 开发笔记:手机状态栏 StatusBar

UWP 有关应用标题栏 TitleBar 的文章比较多,但介绍 StatusBar 的却没几篇,在这里随便写写.状态栏 StatusBar 用法比较简单,花点心思稍微设计一下,对应用会是个很好的点缀. 说明一下,当应用运行在 PC 上时我们叫 TitleBar ,运行在 Mobile 上时我们叫 StatusBar ,这是两个不同的玩意儿. 在使用 StatusBar 之前,你需要在项目的引用里添加 Windows Mobile Extensions for the UWP ,并且引用 Wind

ios 实现自定义状态栏StatusBar 和 导航栏navigationBar 的状态和颜色

很多app中可以看到不同与导航栏的状态栏的颜色,他妈的真绕嘴. 一.更改状态栏颜色 (StatusBar) 就是比如导航栏是红色的状态栏是绿色的. 要实现这样的效果其实很简单,就是添加一个背景view. 简单的实现过程如下: 1 // 设置导航颜色 可用 2 [self.navigationController.navigationBar setBarTintColor:[UIColor redColor]]; 3 //创建一个高20的假状态栏 4 UIView *statusBarView =

Android隐藏状态栏、导航栏

Android隐藏状态栏.导航栏 [java] view plain copy private void hideStatusNavigationBar(){ if(Build.VERSION.SDK_INT<16){ this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); }else{ int uiFlags = View

隐藏状态栏后tableview自动滚动的问题

最近在开发过程中碰到一个很奇怪的问题,在将状态栏隐藏掉之后,页面上的tableView会自动向上滚20个像素. 状态如下: 这是因为在iOS7.0之后,系统会自动调整scrollView的layout 和 contentInsets .从而使其自动地适应iOS7之后那种整个屏幕都可以放入自定义控件的方法.而我们大多数在开发过程中并不希望收到系统自动的影响而是完全掌握开发过程中的每一个细节.还有一个愿意是因为目前我们大多数的应用都是要向下适配到iOS6,而在6中并未提供这样的特性,所以在代码级别依

Android实现隐藏状态栏和标题栏

隐藏标题栏需要使用预定义样式:android:theme=”@android:style/Theme.NoTitleBar”. 隐藏状态栏:android:theme=”@android:style/Theme.NoTitleBar.Fullscreen”. <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/

iOS7隐藏状态栏 status Bar

转自:http://blog.csdn.net/dqjyong/article/details/17896145 IOS7中,不仅应用的风格有一定的变化,状态栏变化比较大,我们可以看到UIVIEWCONTROLLER的状态栏与导航栏基本是一体的.因此UIVIEWCONTROLLER的HIDE/SHOW状态的方法也跟其他版本的不一样了. 在IOS7以前的版本,HIDE/SHOW是通过以下代码实现 [cpp] view plaincopy [[UIApplication sharedApplicat

iOS之隐藏状态栏

iOS7中,不仅应用的风格有一定的变化,状态栏变化比较大,我们可以看到UIViewController的状态栏与导航栏基本是一体的.因此UIVIEWCONTROLLER的hide/show状态的方法也跟其他版本的不一样了. 在iOS7以前的版本,hide/show是通过以下代码实现 [cpp] view plain copy [[UIApplication sharedApplication] setStatusBarHidden:YES(NO) withAnimation:UIStatusBa

iOS隐藏状态栏

有时候,要求在程序启动的过程中隐藏状态栏,勾上上面即可. #pragma mark - 在启动入口 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { application.statusBarHidden = NO; } 就这么简单.