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;

}

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

相关文章推荐

iOS 设置导航透明的两种方法

方法一 在当前页面加入下面方法 - (void)viewWillAppear:(BOOL)animated{     [super viewWillAppear:animated];     ...
  • J_R_K
  • J_R_K
  • 2016年10月13日 14:30
  • 5616

献给初学iOS的小盆友们——微博app项目开发之三设置导航条

献给初学iOS的小盆友们——微博app项目开发之三上节课我们已经完美的做出了自定义的tabBar来代替系统的tabBar,而且让badgeView的设置也变得很灵活。今天我们主要讲为每个功能的View...

iOS开发 - 渐变导航条升级版(判断滚动的方向和改变方向时的位置)

博主以前发过一篇渐变导航条的,地址:http://blog.csdn.net/codingfire/article/details/51604098但是在中部滚动的时候不能实现渐变,类似的好的效果在百...

iOS新闻客户端开发教程6-二级栏目导航条

今天我们来介绍下新闻二级栏目。二级栏目在我们的新闻Tab页里,分别有头条,娱乐,体育,财经,科技等等不同类别的新闻,我们是使用一个二级栏目条来展示不同类别的新闻。1.服务器json接口// colum...
  • JaCman
  • JaCman
  • 2015年11月20日 09:07
  • 1323

【iOS开发】---- 表格滚动时隐藏及显示导航条和标签栏

在iOS开发中,以瀑布流浏览图片时通常希望能更多空间来展示内容,这样我们就希望UIScrollView滚动时隐藏及显示导航条和标签栏。 我们希望向下滚动时显示,向上滚动时隐藏,同时希望隐藏和显示的动画...

IOS 导航条 以及 状态栏颜色 相关设置

局部导航栏颜色设置//设置导航条颜色 美团导航栏颜色 self.navigationController.navigationBar.barTintColor = [UIColor color...
  • zesicus
  • zesicus
  • 2015年12月07日 10:20
  • 2030

【导航条滚动透明】一个分类搞定

下面这个界面有没有觉得很眼熟。打开你手里的App仔细观察,你会发现很多都有实现这个功能。比如美团外卖的首页模块,新浪微博的个人详情页面。要怎么样才能快速的实现这个功能呢!那下面由笔者来告诉你如何三行代...

ios7:实现类似于人人、safari的可动态调整大小的导航条以及类似于雅虎天气的全透明导航条

****转载请注明出处一、可动态调整大小的导航条要想调整导航条(NavigationBar)的大小或位置,只需改变他的frame即可。但怎样让导航条上的那些控件(按钮、标题、searchbar之类的)...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS 开发导航条的透明设置
举报原因:
原因补充:

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