2011-12-10 116 views
2

我试图让我的自定义视网膜图像显示在我的自定义iOS5 TabBar中失败。将自定义视网膜图像添加到TabBar在iOS5

我在我的TabBar中有4个项目,我已将选定/未选中的图像设置为[email protected],其分辨率为160px x 75px。我认为这些160像素宽度图像中的4个可以很好地适应640像素的视网膜宽度。

您可以查看这里我[email protected] https://lh4.googleusercontent.com/-afHulbEcxNE/TuPe-YIj91I/AAAAAAAAAII/lCojphAxF9w/s160/contact%2525402x.png

我已经设定程式设计的所有项目,如下图所示。

UIImage *selectedContact = [UIImage imageNamed:@"[email protected]"]; 
UIImage *unselectedContact = [UIImage imageNamed:@"[email protected]"]; 

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

您是否查看了定制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像素。他们也应该是一个纯色,标签栏添加着色。

+0

这是图标寿,iOS5之前? – Chris

+0

标签栏图标,您可以开发的每个iOS版本。 – JoePasq

+0

我的歉意,但我不跟随。我在HIG的印象下,现在我可以选择在图标上指定图像。从HIG,我认为如果@ 2x指令存在,API会扩展吗? – Chris

5

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

[UIImage imageNamed:@“contact.png”]

+0

哇,他在谈论选择图像,我在谈论图标。我走了。我会更新我的答案。谢谢。 – JoePasq

+0

您对文件名加载是否正确。从[docs](http://developer.apple.com/library/ios/documentation/UIKit/Reference/UIImage_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006890-CH3-SW10):> “如果屏幕的缩放比例为2.0,则此方法首先搜索具有相同文件名的图像文件,并附加@ 2x后缀。例如,如果文件的名称是按钮,它首先搜索按钮@ 2x。“ – JoePasq

+0

该命令应该是:[UIImage imageNamed:@”contact“]; .png不是必需的。 – Linasses