zoukankan      html  css  js  c++  java
  • iOS7隐藏状态栏 status Bar

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

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

    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一下发现现在的解决方法有两种:

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

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


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

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

    1. [self setNeedsStatusBarAppearanceUpdate];  

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

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

    或者调用下面的代码:

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

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

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

    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. }  
  • 相关阅读:
    Unique Binary Search Trees——LeetCode
    Binary Tree Inorder Traversal ——LeetCode
    Maximum Product Subarray——LeetCode
    Remove Linked List Elements——LeetCode
    Maximum Subarray——LeetCode
    Validate Binary Search Tree——LeetCode
    Swap Nodes in Pairs——LeetCode
    Find Minimum in Rotated Sorted Array——LeetCode
    Linked List Cycle——LeetCode
    VR AR MR
  • 原文地址:https://www.cnblogs.com/wangpei/p/4052750.html
Copyright © 2011-2022 走看看