首先我們需要弄明白這條黑線是什么?
就如上圖所示, 知道了黑線是什么, 接下來的處理就簡單了, 但是由于iOS 8.3 與iOS 10.3版本之間控件的層次關(guān)系還是有些許差別的, 所以處理的時(shí)候需要注意一下, 至于控件層級(jí)哪個(gè)版本發(fā)生的改變, 由于我電腦上沒安裝一系列的模擬器, 所以暫時(shí)不確定, 推測(cè)是10.0之后(個(gè)人猜測(cè), 未驗(yàn)證).
方法一: 找到黑線, 將其隱藏, 代碼如下
// 頁面將要出現(xiàn)時(shí)
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// 設(shè)置導(dǎo)航欄底部黑色線(0.5px)隱藏
for subview in navigationController!.navigationBar.subviews[0].subviews {
if subview.isKind(of: UIImageView.self) {
subview.isHidden = true
}
}
}
// 頁面將要消失時(shí), 修改回來
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()需要帶有半透明效果的一張圖片, 由于我沒有, 就暫時(shí)沒設(shè)置
//如果像下面一樣, 只是賦值一個(gè)沒有真實(shí)圖片的UIImage對(duì)象, 會(huì)發(fā)現(xiàn)導(dǎo)航欄已經(jīng)完全透明了.
navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .any, barMetrics: .default)
navigationController?.navigationBar.shadowImage = UIImage()