在导航栏中使用 alpha 设置背景颜色

Setting a background color with alpha in Navigation bar

我希望导航栏的背景是 alpha 为 0.5 的颜色,以便能够部分看到下方视图的内容。我试过这样做:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    self.navigationController?.navigationBar.barTintColor = UIColor.blue
    self.navigationController?.navigationBar.isTranslucent = true
}

如果我把isTranslucent设置成true,那么navigationBar颜色就清楚了。如果我将 isTranslucent 设置为 false,即使我设置 UIColor.blue.alpha(0.5)

颜色也是不透明的

我该怎么做?

如果您只想 NavigationBar(不包括状态栏)背景带 alpha..试试这个

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
    self.navigationController?.navigationBar.isTranslucent = true
    self.navigationController?.navigationBar.backgroundColor = UIColor.blue.withAlphaComponent(0.5)
}

如果您想要包含 status bar 的 alpha 背景颜色,恐怕您必须使用具有 alpha 值的图像。 see this

您还可以制作所需颜色和透明度的图像,然后在 AppDelegate 中的 didFinishLaunchingWithOptions 函数中只需添加以下内容:

//navigation bar
        let navBackgroundImage:UIImage! = UIImage(named: "nav.png")
        UINavigationBar.appearance().setBackgroundImage(navBackgroundImage, for: .default)

其中 nav.png 是您的图片。

希望这对您有所帮助。 :)