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];
  • 相关阅读:
    MySQL_基础_TCL事务控制语言
    MySQL_基础_DDL数据定义语言
    MySQL_基础_DQL数据查询语言
    MySQL_基础_DML数据操纵语言
    MySQL_基础_存储过程和函数
    MySQL_基础_变量
    linux 常用命令
    灵活QinQ示例
    RRPP 演示实例
    ERPS实例演示
  • 原文地址:https://www.cnblogs.com/fs-ios/p/5306464.html
Copyright © 2011-2022 走看看