我想在 iOS 12 中隱藏/洗掉導航欄大標題底部邊框。在較新的版本中它作業正常。
func setupTransparentNavigationBar() {
let textAttributes = [NSAttributedString.Key.foregroundColor: UIColor.colorWhite()]
navigationController?.navigationBar.tintColor = UIColor.colorWhite()
navigationController?.navigationBar.backgroundColor = UIColor.clear
navigationController?.navigationBar.isTranslucent = true
if #available(iOS 13, *) {
let appearance = UINavigationBarAppearance()
appearance.configureWithTransparentBackground()
appearance.backgroundColor = .clear
appearance.titleTextAttributes = textAttributes
// Customizing our navigation bar
navigationItem.standardAppearance = appearance
navigationItem.scrollEdgeAppearance = appearance
} else {
navigationController?.navigationBar.titleTextAttributes = textAttributes
navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
navigationController?.navigationBar.shadowImage = UIImage()
}
}
有什么方法可以洗掉它嗎?還是原生 iOS 行為?

uj5u.com熱心網友回復:
嘗試使用此擴展程式:
extension UINavigationController {
func hideHairline() {
if let hairline = findHairlineImageViewUnder(navigationBar) {
hairline.isHidden = true
}
}
func restoreHairline() {
if let hairline = findHairlineImageViewUnder(navigationBar) {
hairline.isHidden = false
}
}
func findHairlineImageViewUnder(_ view: UIView) -> UIImageView? {
if view is UIImageView && view.bounds.size.height <= 1.0 {
return view as? UIImageView
}
for subview in view.subviews {
if let imageView = self.findHairlineImageViewUnder(subview) {
return imageView
}
}
return nil
}
}
在 viewWillAppear 中使用它:
navigationController?.hideHairline()
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/533790.html
標籤:ios迅速
上一篇:SwiftUI:如何在沒有列舉()的情況下對陣列索引進行排序
下一篇:你如何處理UTF8緩沖區?
