【发布时间】:2016-08-29 14:33:14
【问题描述】:
我正在使用默认的 ios 方法隐藏我的导航栏
self.navigationController?.hidesBarsOnSwipe = true
我的导航栏上有一个自定义的绿色,半透明设置为 true。但是,当导航栏隐藏时,包括状态栏后面的颜色在内的整个自定义绿色都会隐藏,如下图所示。即使导航栏被隐藏,我也想保持状态栏后面的颜色相同(使用相同的半透明导航栏),以便表格的内容不会与状态栏重叠。
我尝试使用以下功能手动设置状态栏颜色。但这不起作用,因为我的导航栏是半透明的,这似乎只是一个补丁修复,因为导航栏不再是半透明的。在转换 VC 时,隐藏/添加背景到状态栏有时会导致糟糕的用户体验
func setStatusBarBackgroundColor(color: UIColor) {
guard let statusBar = UIApplication.sharedApplication().valueForKey("statusBarWindow")?.valueForKey("statusBar") as? UIView else {
return
}
statusBar.backgroundColor = color
}
【问题讨论】:
-
尝试在状态栏位置添加一个高度为 20px 的 uiview,并在应用窗口中添加所需的背景颜色。
-
它可以工作 98%。这里有点挑剔,如果我这样做并仔细观察,当“半透明”导航栏隐藏并传递我为状态栏创建的 UIView 时,我会看到导航栏由于其透明度而越过 UIview。否则效果很好
标签: ios objective-c swift navigationbar