去掉导航栏下边的横条

去掉导航栏下边的横条

在项目中,有一个界面的导航栏颜色需要与视图的背景色相同,在调试的时候发现,设置的导航栏颜色与视图背景色一样时,实际看到的缺不一样,而且导航栏与视图之间有一条很细的线。
方法如下:

#import "ViewController.h"

@interface ViewController ()
{
    UIImageView *navBarBottonLineImageView;
}

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    navBarBottonLineImageView = [self findBarBottomLineImageView:self.navigationController.navigationBar];
    // test

    self.navigationController.navigationBar.barTintColor = [UIColor redColor];
    self.view.backgroundColor = [UIColor redColor];
    self.navigationController.navigationBar.translucent = NO; //设置半透明度为NO后,导航栏的颜色才与视图背景色一样
}

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    navBarBottonLineImageView.hidden = YES;//隐藏
}

- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];
    navBarBottonLineImageView.hidden = NO;
}

// 找到横线视图
- (UIImageView *)findBarBottomLineImageView:(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 findBarBottomLineImageView:subView];// 递归
        if (imageView) {
            return  imageView;
        }
    }
    return nil;
}

@end
  1. 没有设置self.navigationController.navigationBar.translucent = NO;navBarBottonLineImageView.hidden = YES时,原始效果:

    这里写图片描述

  2. 设置了self.navigationController.navigationBar.translucent = NO时效果图:

    这里写图片描述

  3. 设置navBarBottonLineImageView.hidden = YES后的效果图:

    这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值