获取导航栏底部阴影线,设置隐藏(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;
}
网友评论