zoukankan      html  css  js  c++  java
  • 关于状态栏的style和导航栏的研究

    1、设置状态栏和导航条为同一颜色。只需要在topViewController中设置一行代码就可以了:

    [self.navigationController.navigationBar setBarTintColor:[UIColor redColor]];

    效果图:

    2、设置状态栏样式:

    typedef NS_ENUM(NSInteger, UIStatusBarStyle) {
        UIStatusBarStyleDefault                                    = 0, // Dark content, for use on light backgrounds
        UIStatusBarStyleLightContent     NS_ENUM_AVAILABLE_IOS(7_0) = 1, // Light content, for use on dark backgrounds
        UIStatusBarStyleBlackTranslucent NS_ENUM_DEPRECATED_IOS(2_0, 7_0, "Use UIStatusBarStyleLightContent") = 1,
        UIStatusBarStyleBlackOpaque      NS_ENUM_DEPRECATED_IOS(2_0, 7_0, "Use UIStatusBarStyleLightContent") = 2,
    } __TVOS_PROHIBITED;
    

     一共有4种样式。

      2.1、在有导航条的情况下若是想设置单个viewController的状态栏style。可以这样做:

        a、确保info.plist中 View controller-based status bar appearance字段为YES。(默认是YES)

        b、自定义导航控制器(FSNavgationController),在该类中实现:

    - (UIStatusBarStyle)preferredStatusBarStyle
    {
        return [[self.viewControllers lastObject] preferredStatusBarStyle];
    }
    
    或:
    
    - (UIViewController *)childViewControllerForStatusBarStyle
    {
        return self.topViewController;
    }

         c、在对应的控制器类中实现:(备注:一定要实现b的步骤,否则c步骤不执行。)

    - (UIStatusBarStyle)preferredStatusBarStyle
    {
        return UIStatusBarStyleLightContent;(四种状态中的任意一个)
    }

    3、对于一个viewController的childViewControllers,如何设置不同的childViewController显示不同的状态栏。

      a、在viewController类里面实现:

    - (UIViewController *)childViewControllerForStatusBarStyle
    {
        return self.topViewController;
    }

      b、在子控制器中实现

    - (UIStatusBarStyle)preferredStatusBarStyle
    {
        return UIStatusBarStyleLightContent;(四种状态中的任意一个)
    }

    4、隐藏导航栏最下面的那根线:

    // 备注: 一般是在导航条和导航条下面的view的颜色一样时才会去隐藏导航条下面那条线。

    // 所以1、image可以是一个和view颜色一样的一张图片。在没有这样一张图片的情况下,可以用颜色去创建一张图片。

    // 2、image还可以是一张无色透明的一张图片,然后在设置导航条的barTintColor和view的颜色一样。

    [self.navigationController.navigationBar setBackgroundImage:image forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];

    self.navigationController.navigationBar.shadowImage = [[UIImage alloc] init];
  • 相关阅读:
    matlab矩阵中如何去掉重复的行;如何找到相同的行,并找到其位置
    Coursera 机器学习 第9章(下) Recommender Systems 学习笔记
    机器学习基石笔记1——在何时可以使用机器学习(1)
    Coursera 机器学习 第9章(上) Anomaly Detection 学习笔记
    matlab安装过程的被要求的配置程序
    jdk环境变量配置
    Coursera 机器学习 第8章(下) Dimensionality Reduction 学习笔记
    Coursera 机器学习 第8章(上) Unsupervised Learning 学习笔记
    Coursera 机器学习 第7章 Support Vector Machines 学习笔记
    linux服务器---squid限制
  • 原文地址:https://www.cnblogs.com/fs-ios/p/5306464.html
Copyright © 2011-2022 走看看