zoukankan      html  css  js  c++  java
  • 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 appearance为NO

          2. 在AppDelegate.m文件中,didFinishLaunchingWithOptions方法里面增加

    1. [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];  
    2. [[UIApplication sharedApplication] setStatusBarHidden:NO];  
        [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
        [[UIApplication sharedApplication] setStatusBarHidden:NO];

       这样,应用中status bar就统一改成了浅色的风格。

     

       如果你的应用有些viewController中status bar需要特殊设置,那么就需要在相应的viewController中处理,这就需要重写两个API,preferredStatusBarStyle和prefersStatusBarHidden。

    1. -(UIStatusBarStyle)preferredStatusBarStyle  
    2. {  
    3.     return UIStatusBarStyleLightContent;  
    4. }  
    -(UIStatusBarStyle)preferredStatusBarStyle
    {
        return UIStatusBarStyleLightContent;
    }
    1. - (BOOL)prefersStatusBarHidden  
    2. {  
    3.     return YES;  
    4. }  
    - (BOOL)prefersStatusBarHidden
    {
        return YES;
    }

    然后在需要刷新状态栏样式的时候,调用[self setNeedsStatusBarAppearanceUpdate]方法实现刷新。

          从iOS7来说,status bar是浮动在上层的,这样如果window本身下移20个pixel,那么也可以完美的显示。这个方法在理论上应该成立,我努力尝试过,但没有成功,如果有成功的大大请告诉我应该怎么做。

     

    http://blog.csdn.net/sakulafly/article/details/17841239

  • 相关阅读:
    JS中iframe子页面与父页面之间通信
    .NET 大数据量并发解决方案
    angular的性能分析 -随记
    第二次作业
    自我介绍
    总结作业
    2019春第四次课程设计实验报告
    2019春第三次课程设计实验报告
    2019春第二次课程设计实验报告
    第十二周作业
  • 原文地址:https://www.cnblogs.com/geek6/p/3840608.html
Copyright © 2011-2022 走看看