iOS 开发导航条的透明设置

原创 2015年11月18日 14:47:12

目前越来越多的APP采用类似QQ空间那样的效果,这样就要求 navigationBar 是透明状态,这就不能是简单地  alpha 来控制,应为这样导航条上的控件恐怕不是我们需要的效果,所以就来谈一谈关于导航条透明设置的问题 

  [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"nav_bargound.png"] forBarMetrics:UIBarMetricsCompact];

很简单就是这么一句话,注意图片要选择一个透明的图片。还有一个需要注意的就是最后一个参数就是让导航条透明的一种风格(我的理解),本身是有两种风格的

设置到这里,运行一下会发现导航条确实是一种透明的状态,但是会发现有一条黑线,这个当然不是我们想要的样子,接下来我们需要做一些处理,这样的目的就是为了隐藏黑线

首先 我们定义个属性

@property (nonatomicstrong)UIImageView *contentLineImageView;

然后写一个方法:

- (UIImageView *)findHairlineImageViewUnder:(UIView *)view {

    if ([view isKindOfClass:UIImageView.class] && view.bounds.size.height <= 1.0) {

        return (UIImageView *)view;

    }

    for (UIView *subview in view.subviews) {

        UIImageView *imageView = [self findHairlineImageViewUnder:subview];

        if (imageView) {

            return imageView;

        }

    }

    return nil;

}

//然后在viewdidload中调用这个方法

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view.

      _contentLineImageView = [self findHairlineImageViewUnder:self.navigationController.navigationBar];

    self.navigationController.navigationBar.barTintColor = [UIColor colorWithRed:37/255.0 green:195/255.0 blue:149/255.0 alpha:1.0f];

//这句话 要写上。 默认是YES可能你得到的颜色与实际的不匹配。  默认为YES 说明是有透明度的。

    self.navigationController.navigationBar.translucent = NO;

}

//做了这些操作还不够 我们还需要在viewwillappear 和viewwilldisappear 里写下下面的方法。

- (void)viewWillAppear:(BOOL)animated {

    [super viewWillAppear:animated];

    _contentLineImageView.hidden = YES;

}


- (void)viewWillDisappear:(BOOL)animated {

    [super viewWillDisappear:animated];

    _contentLineImageView.hidden = NO;

}

这里你就会发现 导航条透明的效果就完美实现了。

UI_iOS应用状态栏样式设置_及导航栏(NavigationBar)透明

今天记录两点,如图片中的两条红线: 1..在特定的页面需要将状态栏变为白色. 2..为了页面美观度,特定的页面 需要将NavigationVC设置为透明,但是设置将一个透明图设置为Nav的背景图以后会...
  • baizhizhi
  • baizhizhi
  • 2015年08月21日 17:41
  • 2744

iOS开发技巧:设置导航栏全透明效果

前言本篇是iOS开发技巧系列博客的第五篇,本篇主要和大家一起分享如何设置导航栏全透明效果。在实际开发中也经常会有这样的需求,比如iPhone版本的QQ音乐,其播放音乐界面的导航栏就是透明的,如下所示:...
  • Hierarch_Lee
  • Hierarch_Lee
  • 2016年03月08日 00:30
  • 18374

iOS开发中图片的一些处理操作(背景色,透明度,合成,大小)

iOS开发中常用的对图片的处理操作:一.更换图片的背景颜色/** * 改变图片背景为白色 * * @param image 图片源 * * @return 返回更改过背景后的图片 */ + (...
  • sinat_30898863
  • sinat_30898863
  • 2016年01月13日 22:04
  • 3266

ios 导航栏透明及颜色动态变化

让导航栏透明有个简单的方法,就是将一张透明的png图片设置为navgationBar的背景图片,但是这样做的话就不能动态调整其颜色了,下面我们来研究如何用代码来控制其颜色。 新建个工程NavDemo...
  • gmfxch
  • gmfxch
  • 2015年05月06日 09:22
  • 8668

iOS---设置导航条文字

法一:(自定义视图的方法,一般人也会采用这样的方式) 就是在导航向上添加一个titleView,可以使用一个label,再设置label的背景颜色透明,字体什么的设置就很简单了。 //自定义标...
  • iotjin
  • iotjin
  • 2015年12月31日 11:16
  • 414

iOS透明导航栏的平滑过渡(进阶版)

使用Category和Runtime来做到真正的透明导航栏,以及与不透明导航栏之间切换时的平滑渐变过渡效果...
  • Cloudox_
  • Cloudox_
  • 2017年03月22日 22:18
  • 7136

iOS:导航条滚动透明度随着tableView的滚动而变化

来源:HelloYeah  链接:http://www.jianshu.com/p/b8b70afeda81 下面这个界面有没有觉得很眼熟。打开你手里的App仔细观察,你会发现很多都有实现...
  • u011010305
  • u011010305
  • 2016年06月29日 11:19
  • 2764

UINavigationController属性 & 导航栏透明度影响下边子视图的原点位置

//UINavigationController 导航视图控制器, 是用来管理视图控制器的控制器 #warning 注意: 每个导航视图控制器, 至少有一个视图控制器      ...
  • xxxzhikvip
  • xxxzhikvip
  • 2015年12月01日 19:25
  • 987

iOS - 关于导航两侧按钮距离左右侧边距的修改

原文链接:http://www.jianshu.com/p/5c74dfc94deb UI界面的完美是一个好的产品的前提条件,最近开发在设置导航上左侧右侧的barbuttonItem 的...
  • lincsdnnet
  • lincsdnnet
  • 2016年09月19日 09:52
  • 2428

iOS 导航栏颜色渐变

#import "ViewController.h" @interface ViewController () @property (nonatomic,strong)UIImageView * b...
  • g510941365
  • g510941365
  • 2017年02月18日 16:21
  • 549
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS 开发导航条的透明设置
举报原因:
原因补充:

(最多只允许输入30个字)