视图不在状态栏下,状态栏为黑色
我隐藏导航栏在其中一个屏幕上,如果设置:
navigationController?.navigationBarHidden = true
状态栏变黑。 此外,图像不适合所有的屏幕(见屏幕截图)。 如果我注释这一行,导航栏停留在屏幕上,状态栏是白色的。
完整代码:
override func viewWillAppear(animated: Bool) { navigationController?.navigationBarHidden = true navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default) navigationController?.navigationBar.translucent = true navigationController?.navigationBar.backgroundColor = UIColor.clearColor() navigationController?.view.backgroundColor = UIColor.clearColor()
ImageView的所有约束都设置为0,并将其设置为填充屏幕:
所以,我想把ImageView放在状态栏下,并使状态栏的图标/文字变成白色。 我做错了什么?
你没有做任何“错误”的事情。 您已将图像视图的顶部设置到视图控制器顶部布局指南的底部。 那么,这是状态栏的底部 – 正是你看到图像视图的顶部。
如果你想让图像视图覆盖状态栏,它的顶部需要固定在主视图的顶部,而不是顶部的布局指南。
如果您希望状态栏更改文本颜色,则需要实现preferredStatusBarStyle
以返回.LightContent
。 如果这意味着preferredStatusBarStyle
的结果已经改变了,那么你需要调用setNeedsStatusBarAppearanceUpdate
来提醒运行库这个事实。
将图像视图置于状态栏下,并使图像视图填充UIViewControllers视图:
- 清除图像视图的所有约束
- 添加一个约束来将图像视图设置为与父视图具有相同的宽度
- 添加一个约束来设置图像视图与父视图具有相同的高度
- 将图像视图固定到最近的邻居,如下所示。 添加约束
- 最终的约束将如下所示: