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

iOS导航条分割线隐藏

作者: if_you_like | 来源:发表于2016-08-01 10:33 被阅读402次

    第一种方法。(可以保证导航条原来的透明)

    - (void)viewWillAppear:(BOOL)animated {
        [super viewWillAppear:animated];
        self.navigationController.navigationBar.barTintColor = [UIColor whiteColor];
        if ([self.navigationController.navigationBar respondsToSelector:@selector( setBackgroundImage:forBarMetrics:)]){
            NSArray *list=self.navigationController.navigationBar.subviews;
            for (id obj in list) {
                if ([obj isKindOfClass:[UIImageView class]]) {
                    UIImageView *imageView=(UIImageView *)obj;
                    NSArray *list2=imageView.subviews;
                    for (id obj2 in list2) {
                        if ([obj2 isKindOfClass:[UIImageView class]]) {
                            UIImageView *imageView2=(UIImageView *)obj2;
                            imageView2.hidden=YES;
                        }
                    }
                }
            }
        }
    }
    

    第二种方式。(这种方式相对简单一些,但是这种效果会去掉导航条的透明效果)

    [[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
        [[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];
    

    第三种方式。(比较常用,也比较实用)

    //隐藏分割线
    -(void)viewWillAppear:(BOOL)animated{
        [super viewWillAppear:animated];
        self.navigationController.navigationBar.barTintColor = [UIColor whiteColor];
        self.navigationImageView = [self findHairlineImageViewUnder:self.navigationController.navigationBar];
        self.navigationImageView.hidden = YES;
    
    }
    //显示分割线
    -(void)viewDidDisappear:(BOOL)animated{
        [super viewDidDisappear:animated];
        self.navigationImageView.hidden = NO;
    }
    //实现的方法
    -(UIImageView *)findHairlineImageViewUnder:(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 findHairlineImageViewUnder:subview];
            if (imageView) {
                return imageView;
            }
        }
        return nil;
    }
    
    

    相关文章

      网友评论

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

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