美文网首页
iOS 关于导航栏,标签栏下划线显示问题

iOS 关于导航栏,标签栏下划线显示问题

作者: 尼古拉斯佩思 | 来源:发表于2017-10-13 15:17 被阅读0次

1.现实需求经常会出现一种导航栏和图片无缝衔接的需求

例如:

然而往往当你做出来的APP是这个样子的 :
                                 

  1 - 1

看清楚红色方框的一根背景线:

  1 - 2

那么我们进行一个界面解剖:

   1 - 3
 1 - 4

在UINavigationBar上面有一个背景线,这个背景线居然是一个 UIImageView  高度为0.5 宽度全屏:

1 - 5



2.现在我们已经知道了这个背景线是个什么,那么我们如何去设置显示或者隐藏呢:

1.我们确认这是一个UIImageView;
2.他在UINavigationBar上,是他的子视图;
3.他的高度为0.5;
4.我们可以通过图 1 - 5 看到它是存在于UINavigationBar上的UIBarBackground的子视图

所以我们是否有一个思路,通过UINavigationBar的子视图来获取这个视图,判断条件为 [view isKindOfClass:UIImageView.class]
&& view.bounds.size.height = 0.5

实现代码:

@property (nonatomic,strong)UIImageView *navBarHairlineImageView;

- (void)viewDidLoad {

      [super viewDidLoad];

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

}

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

      //判断视图是否是ineImageView

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

            return (UIImageView *)view;
      }

    //递归返回视图的imageView子视图

      for (UIView *subview in view.subviews) {

            UIImageView *imageView = [self findHairlineImageViewUnder:subview];

            if (imageView) {

                  return imageView;

           }

      }

     return nil;

}

- (void)viewWillDisappear:(BOOL)animated {

      [super viewWillDisappear:animated];

      //显示线条

      _navBarHairlineImageView.hidden = NO;

}

- (void)viewWillAppear:(BOOL)animated {

      [super viewWillAppear:animated];

     //隐藏线条

     _navBarHairlineImageView.hidden = YES;

}

最后实现代码:

  2 - 1


最后效果图 :

2 - 2

3.如果在UITabBar上出现了分割线同理可以解决:

3 - 1

这样我就不在给出解决方法了,因为方法同上!

相关文章

网友评论

      本文标题:iOS 关于导航栏,标签栏下划线显示问题

      本文链接:https://www.haomeiwen.com/subject/fnezyxtx.html