- 去除tabBar的上横线和navigationBar的下横线方法介绍
-
如何去除tabBar的上横线和navigationBar的下横线
今天做项目,按照需求,需要作成这个样子。
不显示出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:
但是如果你用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