根据Apple docs
我正在尝试在UITabBarItem上设置自定义已完成的已选择和未选择的图像,如下所示:
...
DetailViewController *vc1 = [[DetailViewController alloc] initWithNibName:@"DetailView" bundle:nil];
UITabBarItem *vc1i = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemTopRated tag:100];
[vc1i setFinishedSelectedImage:[UIImage imageNamed:@"tab_bar_item_selected.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"tab_bar_item_normal.png"]];
[vc1 setTabBarItem:vc1i];
...
基本上发生的事情是TabBar加载得很好,它只是完全忽略了标签栏项目的自定义。
我的目标是iOS5 +
图像是30x30透明PNG并存在于项目中。无法弄清楚我在这里忽略了什么,但一定是什么东西!
这是在tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
方法中调用的,ala Ray Wenderlich的tutorial
有人有什么想法吗?
谢谢!
答案 0 :(得分:6)
标签栏项目使用以下方法初始化:initWithTabBarSystemItem:tag:
。但是,正如文件所说:
此方法返回系统提供的标签栏项。以后不能更改返回项目的标题和图像属性。
您应该使用initWithTitle:image:tag:
初始化标签栏项目。
UITabBarItem *vc1i = [[UITabBarItem alloc] initWithTitle:@"Top Rated" image:nil tag:100];
[vc1i setFinishedSelectedImage:[UIImage imageNamed:@"tab_bar_item_selected.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"tab_bar_item_normal.png"]];
答案 1 :(得分:2)
如果您正试图在UITabBar上显示实际图像,请使用以下代码。
[yourTabBarItem setImage:[[UIImage imageNamed:@"more.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
如果您想以原始状态显示所选图像,请使用以下
[yourTabBarItem setSelectedImage:[[UIImage imageNamed:@"more.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
这两个是
的替代品setFinishedSelectedImage: withFinishedUnselectedImage: