iOS7隐藏状态栏 statusBar

转:http://blog.csdn.net/dqjyong/article/details/17896145

评:通过这点变化,可以看出苹果倾向于使用delegate取代全局变量。

IOS7中,不仅应用的风格有一定的变化,状态栏变化比较大,我们可以看到UIVIEWCONTROLLER的状态栏与导航栏基本是一体的。因此UIVIEWCONTROLLER的HIDE/SHOW状态的方法也跟其他版本的不一样了。 在IOS7以前的版本,HIDE/SHOW是通过以下代码实现

[cpp] view plaincopy

  1. [[UIApplication sharedApplication] setStatusBarHidden:YES(NO) withAnimation:UIStatusBarAnimationSlide];

在iOS7中默认情况下,这个方法不成功了。到setStatusBarHidden:withAnimation:声明的头文件去看看,多了一句注释: // Setting statusBarHidden does nothing if your application is using the default UIViewController-based status bar system. 现在在iOS7中,status bar的外观默认依赖UIViewController, 也就是说status bar随UIViewController的不同而不同。在这种默认的方式下,用全局的方法setStatusBarHidden:withAnimation:是行不通的。

google一下发现现在的解决方法有两种:

如果只是单纯的隐藏状态栏,那么是在默认情况下,只需要重新实现两个新方法

[cpp] view plaincopy

  1. - (UIStatusBarStyle)preferredStatusBarStyle
  2. {
  3. return UIStatusBarStyleLightContent;
  4. //UIStatusBarStyleDefault = 0 黑色文字,浅色背景时使用
  5. //UIStatusBarStyleLightContent = 1 白色文字,深色背景时使用
  6. }
  7. - (BOOL)prefersStatusBarHidden
  8. {
  9. return NO; //返回NO表示要显示,返回YES将hiden
  10. }

上面一个回调方法返回status bar显示时候的样式,下面一个回调控制是否显示status bar.

调用下面的一行代码将会触发上面的回调

[cpp] view plaincopy

  1. [self setNeedsStatusBarAppearanceUpdate];

如果想在hiden/show之间有点动画效果,用下面的代码即可:

[cpp] view plaincopy

  1. [UIView animateWithDuration:0.5 animations:^{
  2. [self setNeedsStatusBarAppearanceUpdate];
  3. }];

或者调用下面的代码:

[cpp] view plaincopy

  1. [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];

还有一种方法是在infor.plist中加入key:UIViewControllerBasedStatusBarAppearance 并设置其值为NO,这样就告诉系统,status bar不依赖于UIViewController. 这样就可以通过上面的方法来hiden status bar.

在设置好这些,我们还是会发现一些问题,就是状态栏虽然没有了,但取而代之的是黑色的一片区域,所以我们还需要调整UIViewController的视图,具体代码为:

[cpp] view plaincopy

  1. -(void)viewDidLayoutSubviews
  2. {
  3. CGRect viewBounds = self.view.bounds;
  4. CGFloat topBarOffset = 20.0;
  5. viewBounds.origin.y = -topBarOffset;
  6. self.view.bounds = viewBounds;
  7. [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];//for status bar style
  8. }
时间: 2024-10-13 12:38:47

iOS7隐藏状态栏 statusBar的相关文章

IOS7 隐藏状态栏 (电池栏)

电池状态栏. //方法一(代码设置): 现在ios7已经更改为透明,并且不占用屏幕高度.其中隐藏及显示的方法如下: 在uiviewcontroller的子类下,调用: if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) { // iOS 7 [self prefersStatusBarHidden]; [self performSelector:@selector(setNeedsStatusBa

隐藏状态栏statusbar

在iOS7以后,隐藏状态栏只需要在根controller中添加 -(BOOL)prefersStatusBarHidden{ return YES; } 即可.但在有UINavigationController和UITabbarController时,在设置rootViewController后 //MainViewController为UITabbarController型 MainViewController *mainVC = [[MainViewController alloc]init

iOS7隐藏状态栏 status Bar

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

iOS7 隐藏状态栏 hide statusBar

1.调用 [self setNeedsStatusBarAppearanceUpdate]; 2.重载以下函数 - (BOOL)prefersStatusBarHidden{ return _hideStatusBar; }

IOS7 隐藏状态栏

- (UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleLightContent; } // - (BOOL)prefersStatusBarHidden//for iOS7.0 { return YES; } 需要隐藏的时候调用 [self setNeedsStatusBarAppearanceUpdate]; 这种方法好处是控制单个视图的状态栏显示与隐藏

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

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

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

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

iOS之隐藏状态栏

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

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

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