iOS8 - 不显示自定义tabbar图像

时间:2014-09-23 12:39:36

标签: ios objective-c iphone ios6 ios8

我有一个以前存在的应用程序(iOS8之前版本),它使用UITabbar和自定义图像。标签栏在iOS7模拟器和设备中可见,但它不在iOS8中显示。是什么导致了这个问题?我使用image的{​​{1}}和selectedImage属性以及UITabBarItem张图片。是XCode 6或iOS模拟器(iPhone)的问题,还是我们不能在tabbar中使用自定义图像(只允许灰度图像!?)? reference for image property of tabbaritem

  • iOS7:

enter image description here

  • iOS8上:

enter image description here

3 个答案:

答案 0 :(得分:1)

让我们假设您的项目中有一系列图片:

   NSArray *icons_low = [[NSArray alloc]init];
   icons_low =  [NSArray arrayWithObjects:@"first_tab_ic.png",  @"second_tab_ic.png", @"third_tab_ic.png", @"4th_tab_ic.png", nil];
   for(int i=0;i<icons_low.count;i++) {
          UITabBarItem *item = [self.tabBarController.tabBar.items objectAtIndex:i];
          NSString *img_name = [NSString stringWithFormat:@"%@", [icons_low objectAtIndex:i] ];
 /* deprecated -> comment such lines  
  [item setFinishedSelectedImage:[UIImage imageNamed:img_name] withFinishedUnselectedImage:
         [UIImage imageNamed:img_name]]; */
         item.image = [[UIImage imageNamed:img_name]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];
         item.selectedImage = [[UIImage imageNamed:img_name]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

    }

但我也怀疑你的tabbar(检查XIB)设置了与setBarStyle相关的东西。

答案 1 :(得分:0)

我初始化tabbar项的方法出现问题(在登录屏幕本身登录完成时的方法中)。我在登录屏幕的viewDidLoad中有登录检查逻辑,如果用户登录则转到主屏幕。但是在登录的viewWillAppear中,我正在重置tabbarItems。

在iOS 8之前的登录屏幕没有显示,我在主屏幕中有初始化的标签栏。但是在iOS 8中它显示了登录屏幕(暂时),即使我从viewDidLoad到主屏幕也是如此。

要解决此问题,我已将tabbar项目init代码移动到主屏幕。enter image description here

答案 2 :(得分:0)

您可以使用以下代码:

UITabBarItem *maps = [[UITabBarItem alloc] initWithTitle:nil image:[[UIImage imageNamed:@"map_icon"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] tag:3];
[navMaps setTabBarItem:maps];