为什么我的标签栏上缺少背景?

Jos*_*own 11 objective-c ios

在某些情况下,iOS 7上的标签栏上缺少背景.见屏幕截图:

在此输入图像描述

我已经将UITabBarController子类化,并且像我这样以模态方式呈现我的子类:

[self.navigationController presentViewController:tabBarController animated:NO completion:nil];
Run Code Online (Sandbox Code Playgroud)

有时,尽管很少见,但背景并没有显示在我的标签栏上,我可以看到它.没有半透明的视图 - 只是透明度......

我已经用出色的调试显示的应用程序,并发现,当我观察问题,_UITabBarBackgroundView从UITabBar在运行时失踪(应该是UITabBar的子视图).如果值得注意的话,当缺少背景时,UITabBar也会丢失UIImageView.

我不知所措.什么可能导致标签栏缺少其_UITabBarBackgroundView子视图?

jrt*_*ton 8

根据文档,除了窗口的根视图控制器之外,不应该使用标签栏控制器:

部署选项卡栏界面时,必须将此视图安装为窗口的根目录.与其他视图控制器不同,标签栏界面永远不应该作为另一个视图控制器的子项安装.

假设在某些情况下以模态方式呈现它会产生一些意想不到的副作用,这并不是不合理的.使用标签栏作为应用程序的根控制器时,您是否见过这个问题?

我有截屏中显示的"隐形"标签栏,但只有在设置背景图片时我试图变得聪明,但你已经说过你的代码没有发生这种情况.


小智 1

尝试将其添加到您的 AppDelegate 中:

    [[UITabBar appearance] setBackgroundImage:[UIImage imageNamed:@"bottombar_iOS7"]];
    [[UITabBar appearance] setSelectionIndicatorImage:[UIImage imageNamed:@"bottomBarSelectionIndicator_iOS7"]];
Run Code Online (Sandbox Code Playgroud)