在iOS5中将自定义视网膜图像添加到TabBar

时间:2011-12-10 22:53:47

标签: xcode image ios5 tabbar

我尝试将自定义视网膜图像显示在我的自定义iOS5 TabBar中,但未成功。

我的TabBar中有4个项目,我已将选中/未选中的图像设置为contact@2x.png,其分辨率为160px x 75px。我认为这些160px宽度图像中的4个可以很好地适应640px视网膜宽度。

您可以在此处查看我的contact@2x.png https://lh4.googleusercontent.com/-afHulbEcxNE/TuPe-YIj91I/AAAAAAAAAII/lCojphAxF9w/s160/contact%2525402x.png

我已按程序设置了所有项目,如下所示。

UIImage *selectedContact = [UIImage imageNamed:@"contact@2x.png"];
UIImage *unselectedContact = [UIImage imageNamed:@"contact@2x.png"];

UITabBar *tabBar = self.tabBarController.tabBar;
UITabBarItem *item0 = [tabBar.items objectAtIndex:0];
UITabBarItem *item1 = [tabBar.items objectAtIndex:1];
UITabBarItem *item2 = [tabBar.items objectAtIndex:2];
UITabBarItem *item3 = [tabBar.items objectAtIndex:3];

[item0 setFinishedSelectedImage:selectedContact withFinishedUnselectedImage:unselectedContact];
[item1 setFinishedSelectedImage:selectedContact withFinishedUnselectedImage:unselectedContact];
[item2 setFinishedSelectedImage:selectedContact withFinishedUnselectedImage:unselectedContact];
[item3 setFinishedSelectedImage:selectedContact withFinishedUnselectedImage:unselectedContact];

在运行时我可以看到比例设置为1

为什么不从图像后缀中拾取2?标签栏很大,并且没有缩放。

请参阅下面的模拟器截图...

https://lh5.googleusercontent.com/-A5oxZprlDhU/TuPfAlG_HQI/AAAAAAAAAIc/mIwHXOPZSrE/s735/simulator.png

我的应用程序图标和默认图标的其他视网膜图像正常工作。

思考?我开车自己疯了☺提前谢谢。

2 个答案:

答案 0 :(得分:5)

JoePasq错了,他显然不是最新的iOS5外观定制API。你的问题可能是你在文件名中指定了@ 2x,只需将“contact.png”传递给imagedNamed ......

[UIImage imageNamed:@“contact.png”]

答案 1 :(得分:2)

您是否查看过自定义UITabBar外观的文档?

您应该参考Ray Wenderlich关于使用UIAppearance API的本教程。

他的代码就是这样:

UIImage *tabBackground = [[UIImage imageNamed:@"tab_bg"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[[UITabBar appearance] setBackgroundImage:tabBackground];
[[UITabBar appearance] setSelectionIndicatorImage: [UIImage imageNamed:@"tab_select_indicator"]];`

请注意,自定义项发生在标签栏上,而不是标签栏项目 - 假设每个项目的定制都相同。

作为nbransby said,您不在文件名中使用@ 2x。

未经编辑的回答:


来自文档:

  

标签栏上显示的图像来自此图像。如果此图像太大而无法放在标签栏上,则会缩放以适合。标签栏图像的大小通常为30 x 30点。源图像中的alpha值用于创建未选择和选定的图像 - 忽略不透明值。

对于正常分辨率,您的图标应为30x30像素,对于视网膜分辨率,您的图标应为60x60像素。它们也应该是纯色,标签栏会添加颜色。