Navigation Bar不会变透明

Navigation Bar will not become transparent

我需要导航栏变透明。这是我在 ViewController:

中输入的内容
class ViewController: UIViewController {

  @IBOutlet weak var navbar: UINavigationBar!

  override func viewDidLoad() {
    super.viewDidLoad()
    navbar.isTranslucent=true
    navbar.shadowImage = UIImage()
    navbar.backgroundColor = UIColor.clear
  } 

根据调试视图层次结构 UIVisualEffectBackdropViewUIVisualEffectSubviewUIVisualEffectSubview(是的,其中两个)阻止它变得透明。 Ps: 我没有使用导航控制器。

我该如何解决?

这三行应该足以使您的 UINavigationBar 透明。

override func viewDidLoad() {
    super.viewDidLoad()
    // make transparent the navbar
    navbar.setBackgroundImage(UIImage(), for: .default)
    navbar.shadowImage = UIImage()
    navbar.isTranslucent = true
}

如果您使用最新的 beta iOS 13.4 和 XCode 11.4 构建,xmhafiz 答案将不再有效。 我找到了另一种方法,也许它只是测试版软件中的一个错误,但我把它写在那里,以防万一

import UIKit

class TransparentNavBar :UINavigationBar {
    override func awakeFromNib() {
        super.awakeFromNib()
        self.setBackgroundImage(UIImage(), for: .default)
        self.shadowImage = UIImage()
        self.isTranslucent = true
        self.backgroundColor = .clear
        if #available(iOS 13.0, *) {
            self.standardAppearance.backgroundColor = .clear
            self.standardAppearance.backgroundEffect = .none
            self.standardAppearance.shadowColor = .clear
        }
    }
}