0

我很抱歉我的英语。我是 iphone 开发的新手,发生了一件奇怪的事情。

我有一组 jpg 图像要在表格视图中显示。当我在 iphone 模拟器中测试应用程序时,一切正常并且工作正常,但是当在 iphone 测试设备中构建和运行相同的代码时,不会显示相同的图像。

另一个奇怪的行为是,使用一组 png 图像而不是 jpg 在模拟器中完美显示,就像在 iphone 测试设备中一样。

任何人都可以建议我一个解决方案?

我检测到要从 json 文件加载的图像名称。这是我用来显示图像的代码:

UIImageView *immaginePiadina = [[UIImageView alloc] initWithFrame:immagineValueRect];
[immaginePiadina setImage:[UIImage imageNamed:[item objectForKey:@"immagine"]]];

其中 [item objectForKey:@"immagine"] 是我的 json 文件的一个元素,如下所示:

"nome": "66",
"immagine": "pianetapiadabufalavesuviani",
"prezzo": "€ 7,50",
"nomeingrediente": [
                  "bufala",
                  "vesuviani"
                  ]

你怎么能看到我只用文件名而不带文件扩展名来引用图像。我这样做是为了显示图像视网膜,这是错误的吗?

我排除我写了一个不同的区分大小写的名称,因为 png 集可以正常工作。

多谢!!

4

3 回答 3

0

可能有两个单独的问题需要分开,这里是如何解决您的问题。

首先使用 NSFileManager 编写一个方法,给定文件路径验证文件是否存在并且大小大于 0。在无法打开图像的任何地方插入对它的调用。如果您使用“imageNamed”,则获取包的路径并创建路径。如果此方法无法找到图像,请修复它。

其次,模拟器和设备的图像解码是不同的——模拟器使用完整的 OSX 库。因此,拍摄一张无法打开的图像并将其移动到某处。在预览中打开它并使用相同的名称但使用 png+alpha 格式导出它。更改您的代码以期望 png 而不是 jpg,然后重新测试。确保您仍然使用第一种方法来确保文件存在。

一旦成功,您可以尝试其他选项,例如使用预览导出的 jpeg。这应该起作用的原因是所有这些图像格式都允许iOS不支持的大量选项。

鉴于当前格式存在问题,您可以使用 Preview 使用的“sips”程序编写更改脚本。

于 2013-06-03T13:02:52.110 回答
0

我使用以下代码解决了我的问题:

NSString* path = [[NSBundle mainBundle] pathForResource:[item objectForKey:@"immagine"] ofType:@"jpg"];
NSLog(@"%@",path);
UIImage* theImage = [[UIImage alloc] initWithContentsOfFile:path];

我不知道原因,但这样我在 iPhone 测试设备中显示 jpg 没有任何问题。也许是因为 NSBundle 还指定了文件的扩展名。

感谢@David-h 指导我以正确的方式解决我的问题。

于 2013-06-11T08:54:57.903 回答
0

检查图像的扩展名。如果你写.PNG,在模拟器中是可以的,但在设备中不行。

于 2013-10-08T20:35:25.650 回答