iOS 7:UITabBarItem徽章z-index

我想在selectionIndicatorImage上方显示一个UITabBarItem徽章。 有3个屏幕截图:

截图

在这里输入图像说明

浅灰色是selectionIndicatorImage 。 是的,徽章看起来不错。 当我在云端图标UITabBar里面变成:

在这里输入图像说明

这是错误的..我想在select图像上方显示徽章。 如果没有UITabBar图标 – 它看起来不错。

在这里输入图像说明

我该如何解决这个问题? 提前致谢。

编辑

我在故事板中添加了图标。 对于我制作的代码:

 UITabBarItem *cartTabBarItem = (UITabBarItem *)[self.tabBarController.tabBar.items objectAtIndex:3]; if ([[DataSourceWrapper getInstance] getFullCost] == 0) cartTabBarItem.badgeValue = nil; else cartTabBarItem.badgeValue = [NSString stringWithFormat:@"%.0f тнг", [[DataSourceWrapper getInstance] getFullCost]]; 

对于selectionIndicatorImage

 [[UITabBar appearance] setSelectionIndicatorImage:[UIImage imageNamed:@"selected-tabbar-bg.png"]]; 

我知道这有点棘手,但我认为苹果没有按照正确的顺序添加TabBar子视图。 无论如何,我已经解决了以下的方式

 for (UIView *subview in marketTrackerAppDelegate.tabBarController.tabBar.subviews) { if ([marketTrackerAppDelegate.tabBarController.neededController.tabBarItem respondsToSelector:@selector(view)] && [marketTrackerAppDelegate.tabBarController.neededController.tabBarItem performSelector:@selector(view)] == subview) { [marketTrackerAppDelegate.tabBarController.tabBar bringSubviewToFront:subview]; break; } } 

我遇到过同样的问题。 您可以使用@ dollar8build议的代码修复它,或更改UITabBarItems创build的顺序。

我有第四选项卡与第四选项卡的第五个选项卡重叠徽章的徽章和SelectionIndicatorImage,所以首先我设置第五选项卡:

 UIImage *item5image = [UIImage imageNamed:@"profile_tabbar_item"]; UIImage *item5imageSel = [UIImage imageNamed:@"profile_tabbar_item_selected"]; item5image = [item5image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; item5imageSel = [item5imageSel imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; tab5.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"" image:item5image selectedImage:item5imageSel]; 

并设置第4个标签后:

 UIImage *item4image = [UIImage imageNamed:@"messages_tabbar_item"]; UIImage *item4imageSel = [UIImage imageNamed:@"messages_tabbar_item_selected"]; item4image = [item4image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; item4imageSel = [item4imageSel imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; tab4.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"" image:item4image selectedImage:item4imageSel]; 

子视图的顺序是正确的。 当我设置第5个选项卡之前的第4个选项卡 – SelectionIndicatorImage覆盖徽章视图。