iOS7下隐藏status bar的详细研究

info.plist文件中,View controller-based status bar appearance项设为YES,则View controller对status bar的设置优先级高于application的设置。为NO则以application的设置为准,view controller的prefersStatusBarHidden方法无效,是根本不会被调用的。

1.View controller-based status bar appearance设为YES。

这时 view controller中对status bar的设置优先级高于application的设置,用下面的方式隐藏status bar。

1.1 在view controller中调用setNeedsStatusBarAppearanceUpdate,更新status bar的显示
 1 - (void)viewDidAppear:(BOOL)animated
 2 {
 3     [super viewDidAppear:animated];
 4
 5     if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {
 6         [self prefersStatusBarHidden];
 7         [self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
 8     }
 9 }    
1.2 覆盖view controller的prefersStatusBarHidden的实现,返会YES。
1 - (BOOL)prefersStatusBarHidden
2 {
3     return YES;
4 }

2.View controller-based status bar appearance设为NO

这时application的设置优先级最高,用下面的方式隐藏status bar:

1 [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO];

3.结论

  • 如果View controller-based status bar appearance 设为NO,iOS6和iOS7都是用下面的方法隐藏status bar。
1 [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO];
  • 如果View controller-based status bar appearance 设为YES,则需要判断当前是iOS6还是iOS7。

  如果是iOS6,则还通过sharedApplication隐藏。

  如果是iOS7,则用setNeedsStatusBarAppearanceUpdate加prefersStatusBarHidden的方式来隐藏 status bar。

4.取info.plist中 View controller-based status bar appearance中的设置

 1 NSNumber *isVCBasedStatusBarAppearanceNum = [[NSBundle mainBundle]objectForInfoDictionaryKey:@"UIViewControllerBasedStatusBarAppearance"];
 2 if (isVCBasedStatusBarAppearanceNum) {
 3     _isVCBasedStatusBarAppearance = isVCBasedStatusBarAppearanceNum.boolValue;
 4 } else {
 5     _isVCBasedStatusBarAppearance = YES; // default
 6 }

iOS7下隐藏status bar的详细研究

时间: 2024-08-10 17:05:57

iOS7下隐藏status bar的详细研究的相关文章

iOS7下隐藏statusbar的详细研究--转

info.plist文件中,View controller-based status bar appearance项设为YES,则View controller对status bar的设置优先级高于application的设置.为NO则以application的设置为准,view controller的prefersStatusBarHidden方法无效,是根本不会被调用的. 一.如果View controller-based status bar appearance 设为YES.这时 vie

iOS 使用Method Swizzling隐藏Status Bar

在iOS 6中,隐藏Status Bar非常的简单. // iOS 6及以前,隐藏状态栏 [[UIApplication sharedApplication] setStatusBarHidden:YES]; 来到了iOS 7的年代以后,需要在UIViewController中指定: #ifdef __IPHONE_7_0 - (BOOL)prefersStatusBarHidden { return YES; } #endif 并通过下列代码刷新状态栏: if ([viewController

iOS7下隐藏statusbar

info.plist文件中,View controller-based status bar appearance项设为YES,则View controller对status bar的设置优先级高于application的设置.为NO则以application的设置为准,view controller的prefersStatusBarHidden方法无效,是根本不会被调用的. 一.如果View controller-based status bar appearance 设为YES. 这时 vi

iOS 隐藏Status Bar

要隐藏,有3个地方要做: 1.在info.Plist里,将该属性的hidden,设置为YES,这样,在启动时,就不会显示了: 2.在application-didFinish里面写,这样,可以隐藏ios7以下的statusBar 3.对于iOS7以上,需要在具体的viewcontroller里面,实现一个方法:prefersStatusBarHidden 实现过程: 1.设置为YES: 2.在UINavigationControlle.m里面: - (BOOL)application:(UIAp

如何iOS6和iOS7下隐藏UITabBar

不栽跟头,你就不会进步! 这两天适配iOS6,在UITabBar隐藏后原区域不响应点击事件的问题上裹足不前,异常上火(不用心,就会这样)! 对于iOS7而言,隐藏UITabBar很容易: self.tabBarController.tabBar.hidden = YES; 然后把self.view的高度加上个tabBar的高度(默认高度49)就ok了,可谓不费吹灰之力!iOS7以下就不行了! 这里有一段代码,iOS6及以上系统都可以用,我就直接粘过来了 -(void)makeTabBarHidd

iOS7隐藏状态栏 status Bar

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

iOS6和iOS7代码的适配(2)——status bar

用Xcode5运行一下应用,第一个看到的就是status bar的变化.在iOS6中,status bar是系统在处理,应用中不需要考虑这部分,iOS7之后是应用在处理,每个ViewController都可以控制status bar. iOS7里面的status bar是透明的,会把下面的内容一起显示出来,比如我的应用色调是深色调,希望status bar上的图标是浅色的.那么我需要做两步: 1. 在info.plist中设置View controller-based status bar ap

Status Bar 总结

1. 样式 StatusBar有两种样式: UIStatusBarStyleDefault : UIStatusBarStyleLightContent 改变状态栏文字颜色方法: 1)直接设置storyboard的controller设置: 2)代码设置,在UIViewController中重载: - (UIStatusBarStyle)preferredStatusBarStyle {     return UIStatusBarStyleLightContent; } 这个方法不能直接调用,

iOS开发UI篇— View controller-based status bar appearance

info.plist文件中,View controller-based status bar appearance项设为YES,则View controller对status bar的设置优先级高于application的设置.为NO则以application的设置为准,view controller的prefersStatusBarHidden方法无效,是根本不会被调用的. 一.如果View controller-based status bar appearance 设为YES. 这时 vi