视图不在状态栏下方且状态栏为黑色

View doesn't go under status bar and status bar is black

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

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放到状态栏下面,让状态栏icons/text变成白色。我做错了什么?

你什么都没做"wrong"。您已将图像视图的顶部设置为视图控制器顶部布局指南的底部。嗯,这是状态栏的底部 — 正是您看到图像视图顶部的位置。

如果您希望图像视图在状态栏下方,其顶部需要固定到主视图的顶部,而不是顶部布局指南。

而如果你想让状态栏改变文字颜色,你需要实现preferredStatusBarStyle到return.LightContent。如果这意味着 preferredStatusBarStyle 的结果已经改变,您需要调用 setNeedsStatusBarAppearanceUpdate 来提醒运行时这个事实。

要将图像视图放在状态栏下方,并让图像视图填充 UIViewControllers 视图:

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

  • 最终约束将如下所示: