UINavigationBar 和 UINavigationController 的内容之间的差距
Posted
技术标签:
【中文标题】UINavigationBar 和 UINavigationController 的内容之间的差距【英文标题】:Gap between UINavigationBar and the UINavigationController's content 【发布时间】:2016-05-16 17:32:23 【问题描述】:有一个包含(嵌入)的 UINavigationController 可以向上拖动以填满屏幕,我发现了一个奇怪的错误。正是在导航控制器覆盖整个屏幕的那一刻,它的主视图调整了大小,并且在该视图和导航栏之间出现了大约 20 个点的间隙。
appears 这是 UINavigationController 中的“预期”行为。但是你如何绕过它?
【问题讨论】:
【参考方案1】:经过数小时的尝试寻找解决方案(甚至读到没有办法规避这一点),我找到了一个运行良好的解决方案。
在我的 UINavigationController 子类中,我添加了以下覆盖:
override public func viewDidLayoutSubviews()
super.viewDidLayoutSubviews();
if self.view.frame.size.height == Screen.height
for childVC in childViewControllers
childVC.view.frame = CGRectMake(0, navigationBar.frame.size.height, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.height - navigationBar.frame.size.height);
【讨论】:
Screen.height 未知...使用未解析的标识符。有什么新语法吗?【参考方案2】:我认为 20 像素是由 UIStatusBar
拍摄的。如果您使用带有自动布局的 xib 文件或情节提要,您可以将顶部约束设置为顶部布局指南,以便正确处理 20 像素的差异。
【讨论】:
【参考方案3】:现在略有不同。也许有一些语法变化,但这为我做到了!是的!!谢谢@Lukas Kalinski
override public func viewDidLayoutSubviews()
super.viewDidLayoutSubviews();
if self.view.frame.size.height == UIScreen.mainScreen().bounds.height
for childVC in childViewControllers
childVC.view.frame = CGRectMake(0, navigationBar.frame.size.height, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.height - navigationBar.frame.size.height);
【讨论】:
以上是关于UINavigationBar 和 UINavigationController 的内容之间的差距的主要内容,如果未能解决你的问题,请参考以下文章
如何隐藏 UINavigationBar 和 UITabBar 动画?
无法缩小 UIWebView 和 UINavigationBar 之间的差距