我尝试将自定义视网膜图像显示在我的自定义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?标签栏很大,并且没有缩放。
请参阅下面的模拟器截图...
我的应用程序图标和默认图标的其他视网膜图像正常工作。
思考?我开车自己疯了☺提前谢谢。
答案 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像素。它们也应该是纯色,标签栏会添加颜色。