视图不在状态栏下,状态栏为黑色

我隐藏导航栏在其中一个屏幕上,如果设置:

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视图:

  • 清除图像视图的所有约束
  • 添加一个约束来将图像视图设置为与父视图具有相同的宽度
  • 添加一个约束来设置图像视图与父视图具有相同的高度
  • 将图像视图固定到最近的邻居,如下所示。 添加约束

在这里输入图像说明

  • 最终的约束将如下所示:

在这里输入图像说明