Ios 导航栏着色不透明度不为';不要改变颜色

Ios 导航栏着色不透明度不为';不要改变颜色,ios,swift,ios10,Ios,Swift,Ios10,我正在尝试在我的应用程序中使导航栏透明,因此我尝试将导航栏色调的不透明度更改为0,使其完全清晰。但是,这绝对不会影响背景的颜色 我还尝试了编程解决方案,将以下代码放在viewDidLoad中: navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default) navigationController?.navigationBar.shadowImage = UIImage()

我正在尝试在我的应用程序中使导航栏透明,因此我尝试将导航栏色调的不透明度更改为0,使其完全清晰。但是,这绝对不会影响背景的颜色

我还尝试了编程解决方案,将以下代码放在viewDidLoad中:

    navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
    navigationController?.navigationBar.shadowImage = UIImage()
    navigationController?.navigationBar.isTranslucent = true
    navigationController?.view.backgroundColor = .clear

然而,我没有得到任何工作。是否有一种方法使导航栏完全透明(但保持栏按钮不透明)

您必须遍历视图层次结构并找到需要隐藏的视图。单击“调试视图层次结构”按钮查看视图及其名称的列表

这里有一个对我有用的函数:

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    transparentBackgrounds(navigationController?.navigationBar)
}
func transparentBackgrounds(_ view: UIView?) {
    guard let view = view else { return }

    let className = String(describing: type(of: view))
    print(className)
    if ["_UIBarBackground","UIImageView","UIVisualEffectView"].contains(className) {
        view.isHidden = true
    }

    view.backgroundColor = UIColor.clear
    for v in view.subviews {
        transparentBackgrounds(v)
    }
}
导航项颜色的最后一行(tintColor)
    self.navigationController?.navigationBar .setBackgroundImage(UIImage(), for: UIBarMetrics.default)
    self.navigationController?.navigationBar.shadowImage = UIImage()
    self.navigationController?.navigationBar.isTranslucent = true
    self.navigationController?.view.backgroundColor = .clear
    self.navigationController?.navigationBar.backgroundColor = .clear
    self.navigationController?.navigationBar.tintColor = UIColor.white