我正在尝试使用自定义* .png文件设置我的UITabBarController的标签栏图标(一个用于选定文件,一个用于未选择文件)。
图像都是非隔行扫描的png格式,并且正确命名(@ 2x,@ 3x等),位于* .imageset中。
但标签栏项目仅显示为这样的轮廓:
我尝试在Interface Builder中设置这些图像,但没有成功。然后我还尝试以编程方式在MyTabBarController的“loadView”函数中设置它们(这是扩展UITabBarController),如下所示:
UIImage *selectedImage;
UIImage *unselectedImage;
// tab1
selectedImage = [UIImage imageNamed:@"cmdGamesActive"];
unselectedImage = [UIImage imageNamed:@"cmdGamesInactive"];
UITabBarItem *item1 = [self.tabBar.items objectAtIndex:0];
item1 = [item1 initWithTitle:@"Games" image:unselectedImage selectedImage:selectedImage];
// tab2
selectedImage = [UIImage imageNamed:@"cmdFriendsActive"];
unselectedImage = [UIImage imageNamed:@"cmdFriendsInactive"];
UITabBarItem *item2 = [self.tabBar.items objectAtIndex:1];
item2 = [item2 initWithTitle:@"Friends" image:unselectedImage selectedImage:selectedImage];
// tab3
selectedImage = [UIImage imageNamed:@"cmdTrophiesActive"];
unselectedImage = [UIImage imageNamed:@"cmdTrophiesInactive"];
UITabBarItem *item3 = [self.tabBar.items objectAtIndex:2];
item3 = [item3 initWithTitle:@"Trophies" image:unselectedImage selectedImage:selectedImage];
// tab4
selectedImage = [UIImage imageNamed:@"cmdSettingsActive"];
unselectedImage = [UIImage imageNamed:@"cmdSettingsInactive"];
UITabBarItem *item4 = [self.tabBar.items objectAtIndex:3];
item4 = [item4 initWithTitle:@"Settings" image:unselectedImage selectedImage:selectedImage];
......结果相同。
有任何想法如何解决这个问题?
答案 0 :(得分:2)
根据this answer,我做了一些额外的事情,在这里有一些答案。我有自定义的UITabBarController,它与StoryBoard文件中的UITabBarController链接。因此,为了在取消选择TabBar时删除iOS提供的自动色调,我最终以这种方式删除它。图像可以是各种各样的图像,但只是recommended here的方式。在这里:
NSArray *navConArr = self.viewControllers;//self is custom UITabBarController
UINavigationController *naviOne = [navConArr objectAtIndex:0];//I have 3 different tabs, objectAtIndex:0 means the first tab navigation controller
UITabBarItem *naviBtn = naviOne.tabBarItem;
UIImage *image = [[UIImage imageNamed:@"iconNaviOne"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
[naviBtn setSelectedImage:image];
[naviBtn setImage:image];
值得庆幸的是,这就像一个魅力(:
答案 1 :(得分:1)
我遇到了类似的问题。 我为我的标签选择了几个图标,例如“麦克风”,“笑脸”和“快乐”等标签。和'设置'。
但是我执行程序时唯一可见的东西是灰色和蓝色方块。
我修改了我的' .png'图像是透明的,现在它们是可见的。
即,确保用于标签图标的图像没有背景。
答案 2 :(得分:0)
这应该可以解决问题:
UITabBarItem *item0 = [_tabBar.items objectAtIndex:0];
item0.image = [[UIImage imageNamed:@"edit_profile_tab"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
item0.selectedImage = [[UIImage imageNamed:@"edit_profile_tab_active"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];