美文网首页
iOS 隐藏导航栏的分割线

iOS 隐藏导航栏的分割线

作者: Mr_Jee | 来源:发表于2020-05-08 17:15 被阅读0次
    iOS开发过程中经常会遇到需要隐藏导航栏的分割线的需求,分享一个终极方法。

    仔细研究后发现,iOS10只是把_UINavigationBarBackground(UIImageView的子类)改为了_UIBarBackground(UIView的子类)。这两个对象虽然不同,但是作用是一样的,他的Y值为-20,猜测作用应该是为了将NavigationBar延伸到状态栏下面。通过打印出来的顺序可以看到不管是_UINavigationBarBackground还是_UIBarBackground,他们都是在UINavigationBar的最底层,也就是最先被addSuview到父View上的。然后他们的唯一一个子View就是UIImageViewe类型的对象,并且该对象的高度就是0.5,可以确定就是分割线。所以经过精简后,去掉导航栏分割线的代码就变成了下面这个样子:

    if (@available(iOS 14.0, *)) {
            UIView *backgroundView = [self.navigationController.navigationBar subviews].firstObject;
            _navBottomLine = backgroundView.subviews.lastObject;
            _navBottomLine.hidden = YES;
    } else {
            UIView *backgroundView = [self.navigationController.navigationBar subviews].firstObject;
            _navBottomLine = backgroundView.subviews.firstObject;
            _navBottomLine.hidden = YES;
    }
    

    相关文章

      网友评论

          本文标题:iOS 隐藏导航栏的分割线

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