容器视图控制器状态栏 iOS 7
Posted
技术标签:
【中文标题】容器视图控制器状态栏 iOS 7【英文标题】:Container View Controller Status Bar 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 发布你的故事板的照片,约束在左侧完全展开吗? 【参考方案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.height
和subview.centerY == rootVCView.centerY
。
这是针对您只有一个子视图的简单情况,您需要针对具有顶部约束的子视图执行此操作。在不了解您的故事板布局的情况下,这是我能提供的最佳解决方案。希望对您有所帮助!
【讨论】:
感谢 rvijay007。虽然您的解决方案不符合要求,但它引导我朝着正确的方向前进。我没有想到topLayoutGuide
。我已留下答案,已全部解决,谢谢!【参考方案3】:
为您的容器视图添加“Top Space To:”约束而不是“topLayoutGuide”,它将解决问题
【讨论】:
以上是关于容器视图控制器状态栏 iOS 7的主要内容,如果未能解决你的问题,请参考以下文章