使用UIViewController包含并显示/隐藏状态栏时,UINavigationBar太高了

时间:2015-08-27 17:47:12

标签: ios uiviewcontroller uinavigationcontroller autolayout statusbar

我的应用程序设置在根视图控制器使用UIViewController containment来显示应用程序的主要内容的位置(如果您有side menu in your app,这很常见)。我使用自动布局通过故事板创建了这个视图控制器。

每当我的状态栏被隐藏然后显示时(例如,当我在我的应用中查看YouTube视频时),导航栏显得太高(好像状态栏报告其高度是实际的两倍)是)。

看起来类似于以下内容:

enter image description here

为什么会发生这种情况,我该如何解决?

1 个答案:

答案 0 :(得分:0)

问题是我将UIContainerView与顶部版面指南的底部对齐。如果您将要约束的约束切换到Superview的顶部,或者转到顶部布局指南的顶部,则应该在iOS 7和8中都能获得正确的行为。

作为参考,以下是尝试对齐不同对象时会发生的情况:

+-------------------------+-----+------------+-----------------+
|       Aligned To        | iOS | Visibility |  Result (Image) |
+-------------------------+-----+------------+-----------------+
| Superview.Top           | *   | *          | Correct (1 & 2) |
| Top Layout Guide.Top    | *   | *          | Correct (1 & 2) |
| Top Layout Guide.Bottom | 7   | Hidden     | Bug (3)         |
| Top Layout Guide.Bottom | 7   | Visible    | Bug (4 or 5)    |
| Top Layout Guide.Bottom | 8   | Hidden     | Correct (1)     |
| Top Layout Guide.Bottom | 8   | Visible    | Bug (4 or 5)    |
+-------------------------+-----+------------+-----------------+

注意: iOS 列中的*是指iOS 7和8. 可见性列中的*是指隐藏和可见。

图片:

1:正确隐藏

  

enter image description here
  (状态栏已完全删除。)

2:正确显示

  

enter image description here

3:错误隐藏

  

enter image description here
  (保留状态栏高度,但不显示任何内容。)

4:错误显示

  

enter image description here
  (状态栏获得白色背景,并且有额外的空间,好像它的高度是它的两倍。)

5:错误地显示(最初)

  

enter image description here
  (状态栏有白色背景,但高度正确。这似乎只在应用程序启动时第一次出现并显示状态栏。隐藏并再次显示状态栏后,它看起来像# 4。)