隐藏导航栏但也保留状态栏的背景颜色

时间:2016-08-29 14:33:14

标签: ios objective-c swift navigationbar

我正在使用默认的ios方法隐藏我的导航栏

self.navigationController?.hidesBarsOnSwipe = true

我的导航栏上有一个自定义绿色,半透明设置为true。但是,当导航栏隐藏时,整个自定义绿色(包括状态栏后面的颜色)会隐藏,如下图所示。我想保持状态栏后面的颜色相同(使用相同的半透明导航栏),即使隐藏了导航栏,这样表的内容也不会与状态栏重叠。

status bar

我尝试使用以下功能手动设置状态栏颜色。但这不能很好,因为我的导航栏是半透明的,这只是一个补丁修复,因为导航栏不再是半透明的。隐藏/添加背景到状态栏有时会在转换VC时产生糟糕的用户体验

    func setStatusBarBackgroundColor(color: UIColor) {
    guard  let statusBar = UIApplication.sharedApplication().valueForKey("statusBarWindow")?.valueForKey("statusBar") as? UIView else {
        return
    }
    statusBar.backgroundColor = color
}

1 个答案:

答案 0 :(得分:0)

你可以通过应用渐变层来实现这一点。这是代码,请看看。

app.get('/', routes);