如何设置透明导航栏? iOS 11 swift 4 Xcode 9

How to set a transparent navigation bar? iOS 11 swift 4 Xcode 9

右图是我需要的,左图是我得到的:

1

我正在尝试制作一个透明的导航栏,在我正在阅读的书中写道,您需要做的就是将这段代码插入到首选视图控制器的 viewDidLoad() 方法中:

navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
navigationController?.navigationBar.shadowImage = UIImage()
navigationController?.navigationBar.tintColor = .white

tableView.contentInsetAdjustmentBehavior = .never

但我得到的只是一个白色的导航栏。 另外,如果写的是图片上的条形差异在这段代码中:

tableView.contentInsetAdjustmentBehavior = .never

但是对我不起作用

我下载了本书章节的最终项目,一切正常,尽管我尝试复制粘贴代码,但仍然没有任何改变

事实是 - 我已经尝试插入此代码:

navigationController?.navigationBar.isTranslucent = true

But it doesn't work

如果重要的话,这本书是 "Beginning iOS 11 programming" 出自 AppCoda

检查此代码

  override func viewWillAppear(_ animated: Bool) {
        self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
        self.navigationController?.navigationBar.shadowImage = UIImage()
        self.navigationController?.navigationBar.isTranslucent = true
    }
    override func viewWillDisappear(_ animated: Bool) {
        self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
        self.navigationController?.navigationBar.shadowImage = UIImage()
        self.navigationController?.navigationBar.isTranslucent = false     
    }

使用以下代码:

navigationController?.navigationBar.isTranslucent = true

希望对您有所帮助。

编辑(更新)

使用下面的代码:

navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
navigationController?.navigationBar.shadowImage = UIImage()
navigationController?.navigationBar.isTranslucent = false

更新 2

override func viewDidAppear(_ animated: Bool) {

        navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
        navigationController?.navigationBar.shadowImage = UIImage()
        navigationController?.navigationBar.isTranslucent = true
        navigationController?.navigationBar.tintColor = .red
    }

必须工作。