没有导航栏的半透明状态栏

问题描述:

目标:有一个表视图滚动,以便它在状态栏下显示半透明状态,但不显示导航栏。没有导航栏的半透明状态栏

现在,我有我的tableView设置为顶部锚点(技术上在状态栏下面)。当您在桌面视图上向上滚动时,这会将状态栏设置为一种可见的颜色。我已经将navigationAppearance的barTintColor设置为半透明,并且没有运气。

任何想法?视图在故事板中实例化

+0

我不能告诉你是什么意思。也许附上你目前拥有的照片? –

+0

我将以Apple Music为例。如果在“库”选项卡上向上滚动,则可以在状态栏下方看到文本“库”不透明。我想做的确实是@DanielLegler – CatLord

+0

你可以用''截图'来更新你的问题,或者你可能已经尝试了一些代码? – Joe

你提的问题是很难没有任何code。我相信你想在喜欢你的tableview内容滚动苹果音乐应用中提到,实现了半透明的状态栏猜测。

请在viewdidLoad方法内尝试下面的代码。

第1步:要隐藏navigation bar。如果你的controller嵌入navigationController

navigationController?.navigationBar.isHidden = true 

第2步:将一个状态大小UIView到控制器作为与调整alpha值的半透明的状态栏。

let statusBarView = UIView(frame: CGRect(x:0, y:0, width:view.frame.size.width, height: UIApplication.shared.statusBarFrame.height)) 
statusBarView.backgroundColor=UIColor.white 
statusBarView.alpha = 0.8 // set any value between 0 to 1 
view.addSubview(statusBarView) 

上面的代码将产生以下输出。让我知道代码适合你。

enter image description here

欲了解更多信息,如何设置tableView framecontentView看看我在下面link答案。


更新:

改进答:

您可以使用UIBlurEffectView达到更好的半透明效果。

let statusBarView = UIView(frame: CGRect(x:0, y:0, width:view.frame.size.width, height: UIApplication.shared.statusBarFrame.height)) 
    let blurEffect = UIBlurEffect(style: .extraLight) // Set any style you want(.light or .dark) to achieve different effect. 
    let blurEffectView = UIVisualEffectView(effect: blurEffect) 
    blurEffectView.frame = statusBarView.bounds 
    blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight] 
    statusBarView.addSubview(blurEffectView) 
    view.addSubview(statusBarView) 

输出:

enter image description here

如您所述,您的UITableView位于状态栏的正下方。向下滚动时,tableView的框架保持相同的大小和原点,并且不会在状态栏下方显示。你想要做的就是将你的tableView的限制设置到超级视图的顶部(而不是顶部布局指南),这意味着它将位于状态栏的正下方。

由于状态栏现在隐藏的顶部20像素的tableView你想一个内容偏移:

tableView.contentInset = UIEdgeInsetsMake(top: 20, left: 0, bottom: 0, right: 0) 

为了使滚动指示开始正下方的状态栏你也想将其设置为偏移它:

tableView.scrollIndicatorInsets = UIEdgeInsets(top: 20, left: 0, bottom: 0, right: 0) 
+0

感谢您的回复!这是有道理的,但是,当我这样做时,我看到UITableView的内容与状态栏重叠。滚动指示器不会在状态栏中停止,但也会重叠。任何想法,为什么这可能是@Codey? – CatLord

+0

我不确定你的意思是重叠。因为你设置'contentInset'单元格应该都有一点偏移量,所以当你滚动到你的tableView的顶部时,你不应该有任何重叠。我编辑了关于滚动指示器的答案。 – Codey