没有导航栏的半透明状态栏
问题描述:
目标:有一个表视图滚动,以便它在状态栏下显示半透明状态,但不显示导航栏。没有导航栏的半透明状态栏
现在,我有我的tableView设置为顶部锚点(技术上在状态栏下面)。当您在桌面视图上向上滚动时,这会将状态栏设置为一种可见的颜色。我已经将navigationAppearance的barTintColor设置为半透明,并且没有运气。
任何想法?视图在故事板中实例化
答
你提的问题是很难没有任何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)
上面的代码将产生以下输出。让我知道代码适合你。
欲了解更多信息,如何设置tableView frame
和contentView
看看我在下面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)
输出:
答
如您所述,您的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)
我不能告诉你是什么意思。也许附上你目前拥有的照片? –
我将以Apple Music为例。如果在“库”选项卡上向上滚动,则可以在状态栏下方看到文本“库”不透明。我想做的确实是@DanielLegler – CatLord
你可以用''截图'来更新你的问题,或者你可能已经尝试了一些代码? – Joe