导航栏不会变得透明

use*_*309 0 uinavigationbar uikit swift

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

class ViewController: UIViewController {

  @IBOutlet weak var navbar: UINavigationBar!

  override func viewDidLoad() {
    super.viewDidLoad()
    navbar.isTranslucent=true
    navbar.shadowImage = UIImage()
    navbar.backgroundColor = UIColor.clear
  } 
Run Code Online (Sandbox Code Playgroud)

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

我该如何解决?

Fed*_*cci 5

如果您使用最新的测试版 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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)