美文网首页iOS进阶
swift 获取导航栏底部线

swift 获取导航栏底部线

作者: 孤雁_南飞 | 来源:发表于2021-12-01 15:39 被阅读0次

获取导航栏底部阴影线,设置隐藏(iOS 15.0 之前可用)
iOS 15之后可用下面viewDidLoad方法里面的隐藏

swift

    override func viewDidLoad() {
        super.viewDidLoad()
        //支持 iOS13 以上的系统版本
        if #available(iOS 13.0, *) { 
            // 带scroll滑动的页面
            navigationController?.navigationBar.scrollEdgeAppearance?.shadowColor = .clear
            // 常规页面
            navigationController?.navigationBar.standardAppearance.shadowColor = .clear
        } 
    }
    override func viewWillAppear(_ animated: Bool) {    
        super.viewWillAppear(animated) 
        if #available(iOS 13.0, *) {  

        } else {
            navLine.isHidden = true   
        } 
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)  
        if #available(iOS 13.0, *) {  

        } else {
            navLine.isHidden = false   
        }  
    }
    //导航栏底部线
    private lazy var navLine: UIView = {
        if let backView = navigationController?.navigationBar.subviews.first {
            for sonView in backView.subviews {
                if sonView.frame.height <= 1 {
                    return sonView
                }
            }
        }
        return UIView()
    }()

此处是 OC 代码,和上面逻辑一样,此处不做解释

@interface FALoginVC ()
///底部导航栏线
@property (nonatomic, strong) UIView * navLine;
@end
- (void)viewDidLoad {
    [super viewDidLoad];
    
    if (@available(iOS 13.0, *)) {
        self.navigationController.navigationBar.scrollEdgeAppearance.shadowColor = [UIColor clearColor];
        self.navigationController.navigationBar.standardAppearance.shadowColor = [UIColor clearColor];
    } 
}
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    if (@available(iOS 13.0, *)) {
        
    } else {
        self.navLine.hidden = YES;
    }
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
   if (@available(iOS 13.0, *)) {
        
    } else {
        self.navLine.hidden = NO;
    }
}

- (UIView *)navLine {
    if (_navLine == nil) {
        UIView * backView = self.navigationController.navigationBar.subviews.firstObject;
        for (UIView * sonView in backView.subviews) {
            if (sonView.frame.size.height <= 1) {
                _navLine = sonView;
                break;
            }
        }
    }
    return _navLine;
}

相关文章

网友评论

    本文标题:swift 获取导航栏底部线

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