2010-07-27 44 views
14

我有一个TabBarController,设置图像的像这样的标签,在-init方法:高分辨率@ 2倍的图像没有被拾起的标签栏项目

self.tabBarItem.image = [UIImage imageNamed:@"tabImage.png"];

我有一个tabImage @资源中的2x.png文件。在iPhone 4模拟器或手机中,高分辨率图像没有被拾取 - 低分辨率版本正在被放大。

任何想法,为什么这可能是?

编辑:一些更多的信息: 如果我尝试和明确使用[email protected](或只是[email protected]),那么标签图像我看到的是非常大的,并炸毁超出片的界限,仿佛它正在从60像素缩放到120像素。所以它看起来像任何名称供应被视为一个规模= 1.0图像。

+0

你是否仔细检查了文件名字母的大小写? – ohhorob 2010-07-27 03:42:26

+0

是的,大小写匹配 – psychotik 2010-07-27 05:38:59

+0

当您删除低分辨率版本时只会在分组中留下高分辨率会发生什么? – iwasrobbed 2010-07-27 21:23:07

回答

0

您可以立即关闭.png。我相信它仍然有效,但你可以尝试。

+0

这似乎没有影响我的问题 – psychotik 2010-07-27 03:30:52

+1

什么是NSLog(@“%f”,[[UIImage imageNamed:@“tabImage.png] scale);'print – 2010-07-27 03:58:46

+0

Jusua - 它打印2.000000 – psychotik 2010-07-27 06:55:10

1

您确定该文件已被添加到XCode项目中,并且在项目浏览器中可见吗?

+0

是的,我很积极。 – psychotik 2010-07-27 15:14:06

0

我刚刚通过的瘸子重做艺术和尝试几个小时去得到它的认可,并通过我的应用程序在iPhone上加载4

我遇到了一定的图像描述了@2x扩展问题没有被识别和加载。

我无法辨别任何图案。我的图像全部使用[UIImage imageNamed:@"<name>.png"]加载到一个单例中。我检查了启动后的图像比例设置,其中一些是1.0(旧艺术),一些是2.0(新艺术)。

我能够解决此问题的唯一方法是删除并重新添加未被识别的高分辨率图像

0

两个愚蠢的错误(这两个我以前发)可能导致此问题:

  1. 一不小心命名的小 版本@ 2倍,而不是大 那些
  2. 具有较大的版本被 略微错过(一个像素)
11

请注意,模拟器不区分大小写,但设备是。确保大小写完全匹配。如果您在某些时候更改了文件名的大小写,则需要清理并重建。有时,对于模拟器,我不得不实际吹走库/应用程序支持/ iPhone模拟器/ 4.3 /应用程序/中的文件夹以获取重建以获取重命名的图像。

始终使用

[UIImage imageNamed:@"foo.png"] 

这将工作在3.x和4.x的设备,并在4.x的模拟器。带有视网膜显示器(和4.x模拟器)的设备会奇迹般地提取@ 2x版本的图像; iOS已被修改为关于此功能和@ 2x.png文件的智能。

请确保你有@ 2x.png和正常。png添加到项目文件中,并执行完整的清理&构建。正如其他人所提到的那样,也要验证图像的大小。显然,如果它们不是这个尺寸的两倍,它将无法工作(我没有自己验证过)。

如果您关闭.png,它将只能在iOS 4.0上运行。所以,如果你正在构建一个4.0+唯一的应用程序,你可以问:

[UIImage imageNamed:@"foo"] 

如果只有一个高分辨率的图像,并想用它两个视网膜和非视网膜设备上,那么你”你必须改变view.contentMode来缩放以适应。

+0

清理和重建解决了它!谢谢。 – 2012-09-07 17:54:46

+0

+1进行清洁和重建。 – Soup 2012-11-06 06:43:10

0

需要2个版本的图像和定义都将在项目文件夹相同的位置,并添加到项目

image.png 60X60 [email protected] 120×120

那么简单使用[UIImage imageNamed:@"image.png"]

就是这么做的自制与按钮和它的工作对我(的iOS 4.1)

+0

它必须是'image @ 2x.png'而不是'image @ 2.png'。 – 2012-10-01 12:08:28

3

我有同样的问题。原来我的PNG不是方形的。解决方案:将其设为正方形,并且可以工作。

+0

这和第一个答案解决了我的问题。 – 2013-07-08 18:43:05

0

要注意的另一件事是有两个具有相同名称的图像。

0

我有同样的问题。 @ 2x图像检查了错误的构建目标(ServiceTests而不是MyProject)。

1

我也有这个问题。

制作2张图片:

  • 30×30像素
  • 为60x60像素的

后缀与的60x60pixel图像@ 2×。例如,[email protected]。然后,在您的故事板或代码中,您可以指定常规版本,并且iOS会根据自己的判断选择@ 2x版本。

0

我有完全相同的问题。

制作两张图片:im1.png和[email protected] 调用imageNamed:第一张。请注意,imageNamed:不初始化UIImage,因此将其用作临时[[UIImageView new] initWithImage:[UIImage imageNamed:@“im1.png”]]或自己初始化UIImage。