3

我遇到状态栏问题。我有一个UIViewController,这有一个容器视图,其中嵌入了UITabBarController一个UIViewController

在我的应用程序中使用View controller-based status bar appearance=YES在 my中启用状态栏时Info.plist,它会正常工作,根目录UIViewController会按照您的预期显示状态栏。

但是,它导致UITabBarController容器视图将我的视图内容向下推 20 像素,在我的标签栏视图顶部留下一个间隙,它认为状态栏应该在哪里。

但是当然状态栏没有显示在那里,因为它显示在通常的屏幕顶部。所以它实际上只是在我的容器视图中添加了一个间隙。

4

3 回答 3

7

结果topLayoutGuide是状态栏将我的视图向下推了 20 像素。因为它需要一个状态栏,所以topLayoutGuide添加了这个 20 像素的空间。

在我的故事板中,我的视图控制器的最顶层子视图有一个约束将其固定到我的视图顶部。这个约束view top等于topLayoutGuide bottom

这意味着当topLayoutGuide添加 20 像素空间时,我的整个视图都被它抵消了。

通过将约束更改为修复topLayoutGuide top,创建的空间现在只是位于我的正常子视图下方,不会造成任何问题。

于 2014-06-13T21:11:24.463 回答
1

我自己也遇到过同样的问题,问题是标签栏控制器中的任何视图都有一个将控制器顶部与 toplayoutguide 匹配的约束。容器视图中选项卡控制器的顶部布局指南的长度仍为 20。一种可行的解决方案是删除此约束,并使视图具有与父视图控制器视图相同的顶部,或者调整高度/中心的大小- y-to-container 与父视图控制器的视图相同(父视图控制器是选项卡中的视图控制器,而不是您嵌入选项卡栏控制器的视图控制器)。

TabBarController --> RootViewController --> RootVCView --> subview

制作subview.height == to RootVCView.heightsubview.centerY == rootVCView.centerY

这是针对您只有一个子视图的简单情况,您需要针对具有顶部约束的子视图执行此操作。在不了解您的故事板布局的情况下,这是我能提供的最佳解决方案。希望能帮助到你!

于 2014-06-13T19:44:10.950 回答
0

为您的容器视图添加“Top Space To:”约束而不是“topLayoutGuide”,它将解决问题

于 2017-02-02T10:32:16.483 回答