UINavigationBar的translucent属性说

版权声明:本文为博主原创文章,转载请注明文章出处。 https://blog.csdn.net/qfeung/article/details/88807242

一. 初识translucent


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二. 官档优先

在这里插入图片描述

  • Discussion部分大意如下:
  1. 默认值为YES. 在navigation bar有一个自定义的background image的情况下, 如果这个background image的任何一个像素的alpha值小于1.0, 则 translucent 属性值为 YES, 反之为 NO;
  2. 若将此属性置为YES(在navigation bar具有opaque的自定义background image的情况下), 此navigation bar将会把系统定义的一个小于1.0的透明度应用在这张background image上.
  3. 若将此属性置为NO(在此navigation bar具有一个translucent自定义的background image的情况下), 此navigation bar会为此图片提供一个opaquebackground(①若此navigation bar的样式为UIBarStyleBlack, 则此background为黑色; ②若此navigation bar的样式为UIBarStyleDefault, 则此background为白色; ③若navigation barbarTintColor属性的值被定义, 则为此颜色;)

三. 文档注释

在这里插入图片描述

  • iOS 7 新的行为如下:
  1. 默认值为 YES;
  2. 您可以通过将属性设置为NO来强制使用不透明背景。(实际情况是设为NO, 导航栏变为白色, 控制器的根视图向下偏移一个导航栏高度的距离, 效果图如1-0所示);
  3. 如果导航栏具有自定义背景图像,则默认值是从图像的Alpha值推断出来的,如果它具有alpha <1.0的任何像素, 则推断为YES;
  4. 如果将setTranslucent:YES发送到具有不透明自定义背景图像的条形图,则会将小于1.0的系统不透明度(经过推断, 应该为0.8)应用于图像。
  5. 如果您将setTranslucent:NO发送到具有半透明自定义背景图像的条形图,它将使用条形图的barTintColor(如果已定义)为图像提供不透明背景,如果barTintColor为nil,则为UIBarStyleBlack提供黑色或UIBarStyleDefault为白色(iOS 12上, 如此设置, 导航栏变为不透明的白色, 推断iOS 12 上的导航栏具有半透明自定义背景图像)。
  • iOS 6及更早版本的默认值为NO。 如果barStyle设置为UIBarStyleBlackTranslucent,则始终为YES.

四. 插图1-0

  • 系统默认样式

- (void)viewDidLoad {
    [super viewDidLoad];

    self.navigationItem.title = @"地表最强iOS小队";
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemPlay target:self action:nil];
    
    self.view.backgroundColor = [UIColor magentaColor];
    }

在这里插入图片描述

  • 设置translucent为NO的样式
- (void)viewDidLoad {
    [super viewDidLoad];

    self.navigationController.navigationBar.translucent = NO;
    self.navigationItem.title = @"地表最强iOS小队";
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemPlay target:self action:nil];
    
    self.view.backgroundColor = [UIColor magentaColor];
}

在这里插入图片描述

Others

  1. 测试环境为iOS 12;

猜你喜欢

转载自blog.csdn.net/qfeung/article/details/88807242