zoukankan      html  css  js  c++  java
  • iOS 更改状态栏颜色和隐藏状态栏

    更改状态栏颜色

    iOS7以后

    状态栏的字体为黑色:UIStatusBarStyleDefault

    状态栏的字体为白色:UIStatusBarStyleLightContent

    解决方案

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

    状态栏字体的颜色只由下面的属性设定,默认为白色:

    [UIApplication sharedApplication].statusBarStyle =  UIStatusBarStyleDefault
    

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

    解决个别vc中状态栏字体颜色不同的办法
    
    1、修改info.plist
    
        在info.plist中,将 View controller-based status bar appearance 设为 NO.
    
    2、在app delegate中添加:
    
        [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
    
    3、在个别ViewController状态栏字体颜色不一样的地方:
    
        -(void)viewWillAppear:(BOOL)animated {
            [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;
        }
    
        -(void)viewWillDisappear:(BOOL)animated {
            [super viewWillDisappear:animated];
            [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
        }
    

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

    在info.plist中 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;
        
    方法二:
    
        自定义一个navController的子类,在这个子类中重写preferredStatusBarStyle方法:
    
        MyNav* nav = [[MyNav alloc] initWithRootViewController:vc];
    
        self.window.rootViewController = nav;
    
        @implementation MyNav
    
        - (UIStatusBarStyle)preferredStatusBarStyle {
            UIViewController* topVC = self.topViewController;
            return [topVC preferredStatusBarStyle];
        }
    

    隐藏某个控制器的状态栏

    • 1.View controller-based status bar appearance = NO
    [[UIApplication sharedApplication] setStatusBarHidden:hidden];
    
    • 2.View controller-based status bar appearance = YES
    -  (BOOL)prefersStatusBarHidden {
        return YES;
    }
    
    • 3.设置Status bar is initially hidden = YES
    可以隐藏启动页展示过程的状态栏。
    
  • 相关阅读:
    css知识点
    javascript 中闭包
    javascript 继承方法总结
    css滚动滚轮事件
    关于闭包的总结
    xpth xslt
    好的js函数
    自动化测试实施(4)
    自动化测试实施(5)
    自动化测试实施(3)
  • 原文地址:https://www.cnblogs.com/gchlcc/p/9938390.html
Copyright © 2011-2022 走看看