zoukankan      html  css  js  c++  java
  • 在iOS7中改动状态栏字体的颜色


    状态栏的字体为黑色:UIStatusBarStyleDefault 

    状态栏的字体为白色:UIStatusBarStyleLightContent


    一、在info.plist中,将View controller-based status bar appearance设为NO


    状态栏字体的颜色仅仅由以下的属性设定,默觉得白色:

    // default is UIStatusBarStyleDefault

    [UIApplication sharedApplication].statusBarStyle


    解决个别vc中状态栏字体颜色不同的办法


    1、在info.plist中,将View controller-based status bar appearance设为NO.

    2、在app delegate中:

       [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;


    3、在个别状态栏字体颜色不一样的vc中


    -(void)viewWillAppear:(BOOL)animated{

        [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;

    }


    -(void)viewWillDisappear:(BOOL)animated

    {

        [super viewWillDisappear:animated];

        [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;

    }


    二、在info.plist中,将View controller-based status bar appearance设为YES,或者没有设置。


    View controller-based status bar appearance的默认值就是YES。


    假设View controller-based status bar appearance为YES。

    则[UIApplication sharedApplication].statusBarStyle 无效。


    用以下的方法:

    1、在vc中重写vc的preferredStatusBarStyle方法。

    -(UIStatusBarStyle)preferredStatusBarStyle

    {

        return UIStatusBarStyleDefault;

    }

    2、在viewDidload中调用:[self setNeedsStatusBarAppearanceUpdate];


    可是,当vc在nav中时,上面方法没用,vc中的preferredStatusBarStyle方法根本不用被调用。

    原因是,[self setNeedsStatusBarAppearanceUpdate]发出后,

    仅仅会调用navigation controller中的preferredStatusBarStyle方法,

    vc中的preferredStatusBarStyley方法跟本不会被调用。


    解决的方法有两个:

    方法一:

    设置navbar的barStyle 属性会影响status bar 的字体和背景色。例如以下。

        //status bar的字体为白色

        //导航栏的背景色是黑色。

        self.navigationController.navigationBar.barStyle = UIBarStyleBlack;

        

        //status bar的字体为黑色

        //导航栏的背景色是白色,状态栏的背景色也是白色。

        //self.navigationController.navigationBar.barStyle = UIBarStyleDefault;


    方法二:

    自己定义一个nav bar的子类,在这个子类中重写preferredStatusBarStyle方法:

    MyNav* nav = [[MyNav alloc] initWithRootViewController:vc];

    self.window.rootViewController = nav;


    @implementation MyNav


    - (UIStatusBarStyle)preferredStatusBarStyle

    {

        UIViewController* topVC = self.topViewController;

        return [topVC preferredStatusBarStyle];

    }



  • 相关阅读:
    Android——继续深造——从安装Android Studio 2.0开始(详)
    PHP——安装wampserver丢失MSVCR110.dll
    Marza Gift for GDC 2016
    Retrieve OpenGL Context from Qt 5.5 on OSX
    Space Time Varying Color Palette
    Screen Space Depth Varying Glow based on Heat Diffusion
    Visualization of Detail Point Set by Local Algebraic Sphere Fitting
    Glass Dragon
    Jump Flood Algorithms for Centroidal Voronoi Tessellation
    京都之行
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4017687.html
Copyright © 2011-2022 走看看