【发布时间】:2016-05-16 17:32:23
【问题描述】:
有一个包含(嵌入)的 UINavigationController 可以向上拖动以填满屏幕,我发现了一个奇怪的错误。正是在导航控制器覆盖整个屏幕的那一刻,它的主视图调整了大小,并且在该视图和导航栏之间出现了大约 20 个点的间隙。
appears 这是 UINavigationController 中的“预期”行为。但是你如何绕过它?
【问题讨论】:
标签: ios swift uinavigationcontroller
有一个包含(嵌入)的 UINavigationController 可以向上拖动以填满屏幕,我发现了一个奇怪的错误。正是在导航控制器覆盖整个屏幕的那一刻,它的主视图调整了大小,并且在该视图和导航栏之间出现了大约 20 个点的间隙。
appears 这是 UINavigationController 中的“预期”行为。但是你如何绕过它?
【问题讨论】:
标签: ios swift uinavigationcontroller
经过数小时的尝试寻找解决方案(甚至读到没有办法规避这一点),我找到了一个运行良好的解决方案。
在我的 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);
}
}
}
【讨论】:
现在略有不同。也许有一些语法变化,但这为我做到了!是的!!谢谢@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);
}
}
}
【讨论】: