14

我有一个 TabBarController 像这样设置选项卡的图像,在-init方法中:

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

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

任何想法为什么会这样?

编辑:更多信息:如果我尝试明确使用tabImage@2x.png(或只是tabImage@2x),那么我看到的选项卡图像非常大并且超出了选项卡的范围,就好像它从 60 像素缩放到 120 像素一样。因此,看起来供应的任何名称都被视为 scale=1.0 图像。

4

11 回答 11

11

请注意,模拟器不区分大小写,但设备是。确保大小写完全匹配。如果您在某个时候更改了文件名的大小写,则需要清理和重建。有时,对于模拟器,我实际上不得不删除 Library/Application Support/iPhone Simulator/4.3/Applications/ 中的文件夹,以便重建以获取重命名的图像。

始终使用

 [UIImage imageNamed:@"foo.png"]

这将适用于 3.x 和 4.x 设备以及 4.x 模拟器。配备 Retina 显示器(和 4.x 模拟器)的设备将神奇地获取您图像的 @2x 版本;iOS 已被修改为对此功能和@2x.png 文件进行智能处理。

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

如果您关闭 .png,它将仅适用于 iOS 4.0。因此,如果您正在构建仅 4.0+ 的应用程序,您可以要求:

    [UIImage imageNamed:@"foo"]

如果您只有一张高分辨率图像并且想在 Retina 和非 Retina 设备上使用它,那么您必须更改 view.contentMode 以适应缩放。

于 2010-10-27T05:49:51.530 回答
3

我有同样的问题。原来我的png不是方形的。解决方案:把它做成正方形,它会工作的。

于 2011-04-13T14:18:58.820 回答
1

我也有这个问题。

制作2张图片:

  • 30x30 像素
  • 60x60 像素

使用@2x为 60x60pixel 图像添加后缀。例如,tabBarImage@2x.png。然后,在您的故事板或代码中,您可以指定常规的tabBarImage.png,iOS 将自行选择@2x 版本。

于 2013-01-17T20:39:50.413 回答
1

您确定该文件已添加到 XCode 项目并且在项目资源管理器中可见吗?

于 2010-07-27T11:01:43.960 回答
0

我有完全相同的问题。

制作两个图像:im1.png 和 im1@2x.png 使用第一个调用 imageNamed:。

注意,imageNamed: 不会初始化 UIImage,因此将其用作瞬态 [[UIImageView new] initWithImage:[UIImage imageNamed: @"im1.png"]] 或自己初始化 UIImage。

于 2013-02-07T22:05:52.057 回答
0

您需要 2 个版本的图像,并且都需要位于项目文件夹中的同一位置并添加到项目中

图片.png 60x60 图片@2.png 120x120

然后只需使用[UIImage imageNamed:@"image.png"]

用自制按钮这样做,它对我有用(iOS 4.1)

于 2010-11-21T16:01:25.287 回答
0

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

于 2012-08-16T23:51:37.777 回答
0

两个可能导致此问题的愚蠢错误(我之前都犯过):

  1. 不小心将小版本命名为 @2x 而不是大版本
  2. 让大版本稍微错开(一个像素)
于 2010-09-17T06:01:24.447 回答
0

您现在可以关闭 .png。我相信它仍然有效,但您可以尝试一下。

于 2010-07-27T03:13:02.727 回答
0

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

于 2011-10-24T22:08:12.567 回答
0

我刚刚在 The Gimp 中重做了几个小时的艺术,并试图让它在 iPhone 4 上被我的应用程序识别和加载。

我遇到了某些带有@2x无法识别和加载扩展名的图像所描述的问题。

我无法辨别任何模式。我的图像都使用[UIImage imageNamed:@"<name>.png"]单例加载。我在启动后检查了图像比例设置,有些是 1.0(旧艺术),有些是 2.0(新艺术)。

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

于 2010-07-31T02:01:30.907 回答