导航栏将不会透明

时间:2018-10-09 16:39:12

标签: swift uikit uinavigationbar

我需要导航栏变得透明。这是我在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:我没有使用导航控制器。

我该如何解决?

2 个答案:

答案 0 :(得分:5)

如果使用最新的Beta iOS 13.4和XCode 11.4进行构建,则xmhafiz答案将不再起作用。 我发现了另一种方式,也许只是beta版软件中的一个错误,但我还是在这里写下来,以防万一

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
        }
    }
}

答案 1 :(得分:1)

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

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