导航栏色调不透明度不会改变颜色

时间:2017-09-22 14:45:47

标签: ios swift ios10

我正在尝试让我的导航栏在我的应用中透明,所以我尝试将条形色调的不透明度更改为0,因此它非常清晰。但是,这对背景的颜色完全没有影响。

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

\Device\Serial0

然而,我没有任何工作。有没有一种方法可以让我的导航栏完全透明(但保持条形按钮不透明)

2 个答案:

答案 0 :(得分:1)

    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

答案 1 :(得分:0)

您必须遍历视图层次结构并找到需要隐藏的视图。单击" Debug View Hierarchy"按钮以查看视图及其名称列表。

这是一个适合我的功能:

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)
    }
}
相关问题