首先我们需要弄明白这条黑线是什么?
iOS 8.3 结构图 iOS 8.3 打印图 iOS 10.3 结构图 iOS 10.3 打印图就如上图所示, 知道了黑线是什么, 接下来的处理就简单了, 但是由于iOS 8.3 与iOS 10.3版本之间控件的层次关系还是有些许差别的, 所以处理的时候需要注意一下, 至于控件层级哪个版本发生的改变, 由于我电脑上没安装一系列的模拟器, 所以暂时不确定, 推测是10.0之后(个人猜测, 未验证).
方法一: 找到黑线, 将其隐藏, 代码如下
// 页面将要出现时
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// 设置导航栏底部黑色线(0.5px)隐藏
for subview in navigationController!.navigationBar.subviews[0].subviews {
if subview.isKind(of: UIImageView.self) {
subview.isHidden = true
}
}
}
// 页面将要消失时, 修改回来
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
for subview in navigationController!.navigationBar.subviews[0].subviews {
if subview.isKind(of: UIImageView.self) {
subview.isHidden = false
}
}
}
方法二:重置navigationController的navigationBar的backgroundImage和shadowImage, 代码如下:
// 下面的UIImage()需要带有半透明效果的一张图片, 由于我没有, 就暂时没设置
//如果像下面一样, 只是赋值一个没有真实图片的UIImage对象, 会发现导航栏已经完全透明了.
navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .any, barMetrics: .default)
navigationController?.navigationBar.shadowImage = UIImage()
网友评论