UITabBarController 未显示其内容的所有大小(UIViewController)

Posted

技术标签:

【中文标题】UITabBarController 未显示其内容的所有大小(UIViewController)【英文标题】:UITabBarController not showing all the size of its contents (UIViewController) 【发布时间】:2014-02-12 08:05:03 【问题描述】:

我的问题是我无法摆脱UITabBarController 底部的橙色背景,有人知道如何摆脱它吗?

详情: 我有这个UITabBarController,当我向它添加UIViewController 时,UIViewController 仅适用于 Retina 4 英寸屏幕的 ios 7 中的UITabBarController 内的大小。但是,当我在 Retina 4 的 iOS 6 中尝试此操作时,UITabBarController 的背景以橙色显示在窗口底部。

我已尝试通过以下方式解决此问题:

1) 重新创建UITabBarController 并手动设置 contentsizeForViewInPopOver

2) NSLog UIViewController 的框架以确保它们是320x568,960 and 1134 但它们都显示相同的橙色(我将UITabBarController 的背景设置为橙色以验证)

3) 放大了mapview和mapview的父视图但没有结果。

注意:图片底部的灰色部分是所有的tabbaritems,但没有显示出来。

我看不到任何变化,也无法弄清楚。有人可以帮帮我吗?

提前致谢!

【问题讨论】:

【参考方案1】:

为您的视图控制器的主视图设置 4 个地图视图的自动布局约束,每侧(顶部、右侧、底部、左侧)一个,所有值都为零。

【讨论】:

感谢您的回答,但我没有在情节提要上进行开发,因为随着程序变得越来越大,它变得越来越复杂。是否有与编程等效的解决方案?谢谢! 您还可以使用constraintsWithVisualFormat:options:metrics:views:NSLayoutConstraint 方法以编程方式创建布局约束。但是,在您的情况下,手动更改地图视图的框架可能更简单,例如从控制器的 viewDidLayoutSubviews 方法中添加以下行:self.myMapView.frame = self.view.bounds;【参考方案2】:

经过数小时的研究,我找到了原因。

我在显示的视图控制器上有一个名为 -(void)showTabBar 的方法,该方法将框架/边界设置为特定框架,该框架特定于 iOS 7 在 Retina 4 显示中!

现在一切都很好,但感谢 @MrTJ 关于 viewDidLayoutSubviews

的提示

【讨论】:

以上是关于UITabBarController 未显示其内容的所有大小(UIViewController)的主要内容,如果未能解决你的问题,请参考以下文章

UITabBarController 仅显示其 UITabBar 的一半(屏幕外)

UITabBarController 未选择的图标图像色调

在 UITabBarController 内未调用 cellForRowAtIndexPath

UISplitViewController 内的 iOS 13 UITabBarController 未正确折叠

UITabBarController canBecomeFirstResponder 方法未被调用

未选择选项卡时更改 UITabBarController 选项卡图标颜色