iOS Tab Bar自定义项图片,tab bar左侧绘制灰色图片
iOS Tab Bar custom items images, tab bar draws gray images on the left
我尝试更改标签栏项目图像的颜色,为此我使用下一个代码:
// Generate a tinted unselected image based on image passed via the storyboard.
for (UIViewController *vc in tabBarController.viewControllers) {
UITabBarItem *item = vc.tabBarItem;
UIImage *image = item.image;
UIImage *imageSel = [image imageWithColor:selectedColor];
UIImage *imageUnsel = [image imageWithColor:unselectedColor];
// Next is not working to set unselected image!
// But setFinishedSelectedImage does.
//item.selectedImage = imageSel;
item.image = imageSel;
//[item setFinishedSelectedImage:imageSel withFinishedUnselectedImage:imageUnsel];
}
UITabBarItem *item = tabBarController.moreNavigationController.tabBarItem;
UIImage *image = [UIImage imageNamed:@"menu-more"];
UIImage *imageSel = [image imageWithColor:selectedColor];
UIImage *imageUnsel = [image imageWithColor:unselectedColor];
item.image = imageSel;
// [item setFinishedSelectedImage:imageSel withFinishedUnselectedImage:imageUnsel];
imageWithColor:是 UIImage 扩展,使用原始图像的 alpha 值生成带颜色的图像。
第一次执行代码,一切正常。
在我更改颜色(调用上面的代码)后,所有标签栏项目都显示在标签栏的左侧,并带有文本。在模拟器和设备中都会发生 (iPhone + iPad)。这是一个错误吗?
您可以使用故事板本身将图像设置为tabbaritem。要将颜色更改为选定的 tabbaritem,无需编写任何 for 循环。您可以使用下面的行。
[[UITabBar appearance] setTintColor:[UIColor greenColor]];
好吧,我想出了解决办法。您需要从头开始创建 UITabBarItem 并在那里设置图像,而不是设置 UITabBarItem 的图像,如下所示:
for (UIViewController *vc in tabBarController.viewControllers) {
UITabBarItem *newItem = [[UITabBarItem alloc] initWithTitle:someTitle image:someImageUnsel selectedImage:someImageSel];
vc.tabBarItem = newItem;
}
UITabBarItem *newItem = [[UITabBarItem alloc] initWithTitle:someTitle image:someImageUnsel selectedImage:someImageSel];
tabBarController.moreNavigationController.tabBarItem = newItem;
虽然此解决方案存在问题:MoreNavigationController 将在设置它的 tabBarItem 后弹出。普通苹果,wtf?!
如果有人可以提供更好的解决方案,请...
我尝试更改标签栏项目图像的颜色,为此我使用下一个代码:
// Generate a tinted unselected image based on image passed via the storyboard.
for (UIViewController *vc in tabBarController.viewControllers) {
UITabBarItem *item = vc.tabBarItem;
UIImage *image = item.image;
UIImage *imageSel = [image imageWithColor:selectedColor];
UIImage *imageUnsel = [image imageWithColor:unselectedColor];
// Next is not working to set unselected image!
// But setFinishedSelectedImage does.
//item.selectedImage = imageSel;
item.image = imageSel;
//[item setFinishedSelectedImage:imageSel withFinishedUnselectedImage:imageUnsel];
}
UITabBarItem *item = tabBarController.moreNavigationController.tabBarItem;
UIImage *image = [UIImage imageNamed:@"menu-more"];
UIImage *imageSel = [image imageWithColor:selectedColor];
UIImage *imageUnsel = [image imageWithColor:unselectedColor];
item.image = imageSel;
// [item setFinishedSelectedImage:imageSel withFinishedUnselectedImage:imageUnsel];
imageWithColor:是 UIImage 扩展,使用原始图像的 alpha 值生成带颜色的图像。
第一次执行代码,一切正常。
在我更改颜色(调用上面的代码)后,所有标签栏项目都显示在标签栏的左侧,并带有文本。在模拟器和设备中都会发生 (iPhone + iPad)。这是一个错误吗?
您可以使用故事板本身将图像设置为tabbaritem。要将颜色更改为选定的 tabbaritem,无需编写任何 for 循环。您可以使用下面的行。
[[UITabBar appearance] setTintColor:[UIColor greenColor]];
好吧,我想出了解决办法。您需要从头开始创建 UITabBarItem 并在那里设置图像,而不是设置 UITabBarItem 的图像,如下所示:
for (UIViewController *vc in tabBarController.viewControllers) {
UITabBarItem *newItem = [[UITabBarItem alloc] initWithTitle:someTitle image:someImageUnsel selectedImage:someImageSel];
vc.tabBarItem = newItem;
}
UITabBarItem *newItem = [[UITabBarItem alloc] initWithTitle:someTitle image:someImageUnsel selectedImage:someImageSel];
tabBarController.moreNavigationController.tabBarItem = newItem;
虽然此解决方案存在问题:MoreNavigationController 将在设置它的 tabBarItem 后弹出。普通苹果,wtf?!
如果有人可以提供更好的解决方案,请...