Ios UINavigationBar和UINavigationController之间的间隙';内容
有一个包含的(嵌入式)UINavigationController,可以向上拖动以填充屏幕,我发现了一个奇怪的bug。就在导航控制器覆盖整个屏幕的那一刻,它的主视图调整了大小,该视图和导航栏之间出现了大约20个点的间隙Ios UINavigationBar和UINavigationController之间的间隙';内容,ios,swift,uinavigationcontroller,Ios,Swift,Uinavigationcontroller,有一个包含的(嵌入式)UINavigationController,可以向上拖动以填充屏幕,我发现了一个奇怪的bug。就在导航控制器覆盖整个屏幕的那一刻,它的主视图调整了大小,该视图和导航栏之间出现了大约20个点的间隙 很明显,这是UINavigationController中的“预期”行为。但是你怎么避开它呢 我花了好几个小时试图找到一个解决方案(甚至读到没有办法绕过这个问题),我找到了一个足够有效的解决方案 在UINavigationController子类中,我添加了以下覆盖: overr
很明显,这是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);
}
}
}
我认为20像素是由
UIStatusBar
拍摄的。如果使用具有自动布局的xib文件或故事板,则可以将“顶部约束”设置为“顶部布局指南”,以便正确处理20像素的差异
现在略有不同。也许有一些语法上的改变,但这对我来说是成功的!是 啊谢谢@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);
}
}
}
屏幕高度未知。。。未解析标识符的使用。有新的语法吗?