动画时避免状态栏透明

Posted

技术标签:

【中文标题】动画时避免状态栏透明【英文标题】:Avoid status bar transparency while animating 【发布时间】:2015-12-17 16:59:02 【问题描述】:

我得到了带有 2 个元素的 viewController:

    带有标签和按钮的视图 表格视图

我通过将视图的高度约束从 170 更改为 0 以及为 view.layoutIfNeeded() 和 tableView.layoutIfNeeded() 设置动画来获得以下动画。

我的目标是当 tableView 的内容偏移量达到某个值时隐藏菜单。

这很好用,除了我在视图中的移动内容上覆盖了状态栏。 是否有任何选项可以将子图层添加到状态栏而不是透明的?或者有什么其他建议?

谢谢!

【问题讨论】:

你可以在那里放一个纯黑色20pt高视图,这使得状态栏的透明度消失了的错觉;但是对于UITableView,我宁愿建议将内容边缘设置为(20.0, 0.0, 0.0, 0.0),这是一个更优雅的解决方案。 ^holex 说的。如果您查看 UIApplication 文档,则无需更改状态栏的背景。 developer.apple.com/library/ios/documentation/UIKit/Reference/… 【参考方案1】:

创建一个视图,将其放在状态栏所在的位置,并将其背景颜色设置为您需要的任何颜色。例如:

let statusBarView = UIView(frame: UIApplication.sharedApplication().statusBarFrame)
statusBarView.backgroundColor = UIColor.blackColor()
view.addSubview(statusBarView)

或者,将内容边缘设置为 (20.0, 0.0, 0.0, 0.0),我同意这是一个更优雅的解决方案,正如 cmets 中的 @holex 所建议的那样

【讨论】:

可能还想为 tableView 的顶部添加内容插入 为什么不直接使用statusBarFrame @Sulthan 太简单了...我已经更新了我的答案。 问题是:那些顶部按钮和标签是 UIView 的一部分,而不是 tableView。 tableView 以绿色/橙色标题开头。所以我认为在这种情况下内容插入对我没有帮助。还是我误解了你的想法?

以上是关于动画时避免状态栏透明的主要内容,如果未能解决你的问题,请参考以下文章

android沉浸式状态栏变色状态栏透明状态栏修改状态栏颜色及透明

Android Kitkat 4.4版本状态栏下使用导航抽屉时状态栏颜色显示为白色不透明

在片段中使用 CoordinatorLayout 时如何使状态栏透明

透明状态栏下工具栏不会滚动

颤振中的透明状态栏

Android 状态栏透明