【问题标题】:Container View Controller Status Bar iOS 7容器视图控制器状态栏 iOS 7
【发布时间】:2014-08-03 19:07:18
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你在使用自动布局和约束吗?
  • 是的,我是。这一切都在故事板中完成。
  • 你能用 tabbarcontroller 和它的 viewcontroller 发布你的故事板的照片,约束在左侧完全展开吗?

标签: objective-c ios7 uitabbarcontroller statusbar container-view


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

    • 感谢 rvijay007。虽然您的解决方案不符合要求,但它引导我朝着正确的方向前进。我没有想到topLayoutGuide。我已留下答案,已全部解决,谢谢!
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-04
      • 1970-01-01
      • 2014-02-21
      • 1970-01-01
      • 2013-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多