对不起我的英语。 我是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集正常工作。
非常感谢!!
答案 0 :(得分:0)
可能有两个需要分离的问题,以下是如何解决问题。
首先使用NSFileManager编写一个方法,给定一个文件路径验证文件是否存在且大小大于0.在无法打开图像的任何地方插入一个调用。如果使用“imageNamed”,则获取包的路径并创建路径。如果此方法无法找到图像,请将其修复。
其次,图像解码对于模拟器和设备是不同的 - 模拟器使用完整的OSX库。因此,请拍摄一张无法打开的图像并将其移动到某处。在预览中打开它并使用相同的名称但使用png + alpha格式导出它。更改您的代码以期望png而不是jpg,并重新测试。确保您仍然使用第一种方法来确保文件存在。
一旦取得一个成功,您可以尝试其他选项,例如使用预览导出的jpeg。这应该起作用的原因是所有这些图像格式都允许大量的选项,所有这些都是iOS不支持的。
鉴于当前格式存在问题,您可以使用“sips”程序编写脚本更改,这是预览使用的。
答案 1 :(得分:0)
我使用以下代码解决了我的问题:
NSString* path = [[NSBundle mainBundle] pathForResource:[item objectForKey:@"immagine"] ofType:@"jpg"];
NSLog(@"%@",path);
UIImage* theImage = [[UIImage alloc] initWithContentsOfFile:path];
我不知道原因,但是这样我在iPhone测试设备中显示jpg没有任何问题。也许是因为NSBundle还指定了文件的扩展名。
感谢@ David-h指导我以正确的方式解决我的问题。
答案 2 :(得分:0)
检查图像的扩展名。如果你写.PNG,在模拟器中是好的,但不在设备中。