去除tabBar的上横线和navigationBar的下横线方法介绍

33 篇文章 0 订阅
15 篇文章 0 订阅
去除tabBar的上横线和navigationBar的下横线方法介绍
2016-03-25       0  个评论    来源:qq_33777090的博客  
收藏     我要投稿

如何去除tabBar的上横线和navigationBar的下横线

 
标签:iOS导航条横线navigation隐藏
  

今天做项目,按照需求,需要作成这个样子。
这里写图片描述
不显示出navigationBar的那个线。

在介绍navigationBar的那个线之前,我想先说一下tabBar上方的拿刀线。<喎�"http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwPsrXz8ijrM7Sw8e/ydLUtPLTodK7z8J0YWJCYXLJz7XEv9i8/sPHoaM8YnIgLz4NCrXDtb3S1M/Cv9i8/qO6PGJyIC8+DQo8aW1nIGFsdD0="tabBar上的控件" src="http://www.2cto.com/uploadfile/Collfiles/20160325/20160325145457319.png" title="\" />
我们可以看到里面有一个UIImageView 高度为0.5.
也就是那个虚线。

所以说,我们想更改tabBar的线,就对这个UIImageView操作。
代码来了。

for (UIView *lineView in self.tabBarController.tabBar.subviews)
    {
        if ([lineView isKindOfClass:[UIImageView class]] && lineView.bounds.size.height <= 1)
        {
            UIImageView *lineImage = (UIImageView *)lineView;
        //更改线的颜色
            //lineImage.backgroundColor = [UIColor redColor];
        //隐藏
            lineImage.hidden = YES;
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

接下来,我们继续说一下去除navigationBar的下横线:
那NavgationBar里面是不是也会有UIImageView呢
首先我们也打印一下 navigationBar
我们会发现,里面并没有所谓的UIImageView:
navigationBar.subviews
但是如果你用xcode的那个层次结构图,你可以看到
层次图
箭头指向的就是那个UIImageView
所以,我们只需要修改UIImageView的属性,也就可以做到我们想要的了。
修改NavigationBar的横线有两种办法。
1.直接修改UIImageView:
优点:简单粗暴,省代码;
缺点:navigationBar的半透明效果没了。

- (void)viewWillAppear:(BOOL)animated{

    [super viewWillAppear:animated];

    [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
    self.navigationController.navigationBar.shadowImage = [UIImage new];

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2.利用递归拿到子控件中的那个横线子控件,
利用ViewController的生命周期,在ViewDidLoad中拿到横线line,
在ViewWillAppear中隐藏。
优点:navigationBar的半透明效果存在
缺点:代码稍微复杂一点点。

@interface ZDProfileController ()
{
    UIImageView * line ;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = ZDColor_White;

    line = nil;
    line = [self navigationBarLine:self.navigationController.navigationBar];
}

- (UIImageView *)navigationBarLine:(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 navigationBarLine:subview];
        if (imageView) {
            return imageView;
        }
    }
    return nil;
}
- (void)viewWillAppear:(BOOL)animated{

    [super viewWillAppear:animated];
    line.hidden = YES;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

以上就是,去除tabBar的上横线和navigationBar的下横线的方法。
如果确实帮助到您,请给顶一下。
有不懂的欢迎留言。

 
 

转自:http://www.2cto.com/kf/201603/495455.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值