美文网首页
导航栏背景透明终极方案

导航栏背景透明终极方案

作者: 张俊凯 | 来源:发表于2018-10-10 19:06 被阅读10次

    原理:导航栏透明通常需要把背景颜色和分割线设置透明,大部分的方案是直接设置一个空对象,简单粗暴,缺点是无法复原,现在的解决方案是拿到导航栏背景和分割线的对象,在适当的时候进行隐藏,以下是代码

     UIView *backgroundView = [[self.navigationController.navigationBar subviews] firstObject];
            for (UIView *subView in backgroundView.subviews) {
                if (subView.height > 63) {//实际高度为64 背景视图
                    _navBackImageView = subView;
                }
          
                if (subView.height < 1.0) {//实际高度为0.5  分割线
                    _navLineView = subView;
                }
            }
    
    -(void)viewWillAppear:(BOOL)animated{
        [super viewWillAppear:animated];
        _navBackImageView.hidden = YES;
        _navLineView.hidden = YES;
    }
    
    -(void)viewWillDisappear:(BOOL)animated{
        [super viewWillDisappear:animated];
        _navBackImageView.hidden = NO;
        _navLineView.hidden = NO;
    
    }
    

    没有根据first object 和last object获取对象是因为子视图的对象顺序会改变,这样,拿到对象以后就可以根据自己的需求进行隐藏和显示,目前测试不受系统版本的影响。

    相关文章

      网友评论

          本文标题:导航栏背景透明终极方案

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