2010-12-19 156 views
7

因此,当我从设备上运行应用程序时,图片显示出来,一切都很好。但是,当我移动到设备时,我在38张没有出现的照片中运行了10张。我拉从sqlite数据库的图像的名称,我已经检查,名称是正确的,案件和一切。我检查了捆绑包,图像正确的在那里。在模拟器中显示但不在iPhone设备上显示的图像

记忆在这里起作用吗?我不确定还有什么可能导致这种情况发生?

谢谢!

解决方案: 这些文件以某种方式未正确保存,甚至无法打开说的Photoshop或绘画。因此,文件无法打开,他们没有显示出来......感谢大家的帮助!

回答

6

该模拟器接受更广泛的图像格式。有时你有一个设备无法显示的特定文件类型。仔细检查10个文件,寻找与其他文件有所不同的文件。

2

是的,内存绝对起到这个作用。检查你的UIImage创建调用,并确保它们不返回空。此外,请检查您是否在控制台窗口中收到内存警告。

43

首先要检查的是你用来引用资源的字符串。 iPhone区分大小写,但模拟器不是。

哎呀,刚才看到你检查了这个案子。然后更好地记录所有的UIImage创建调用!

+1

有洞察力。 12. – ratsimihah 2012-08-01 23:23:29

+2

这帮了我。模拟器本身似乎对UIImage的imageNamed部分不区分大小写,但设备对此非常严格。 – Joseph 2012-09-18 19:44:18

+0

这也帮助了我。 – Bobby 2016-03-13 13:01:31

1

通常,如果内存大小是罪魁祸首,那么您的应用程序会在设备上出现内存错误时崩溃。但是,它看起来像图像不显示。

可能出错的另一件事是图像的大小。 iPhone上的UIViews只能具有比GPU支持的最大纹理尺寸更小的尺寸。苹果声明这是1024 x 1024,但我发现它甚至在原始型号iPhone上也更像2048 x 2048。您可能正在为某些图像创建一个视图,这些图像在一个维度上超过了此大小,但是您的Mac在其GPU上具有更大的最大纹理大小,因此它在模拟器中显示得很好。

+0

只是一个关于图像大小的评论,双倍大小是由于新的iPhone 4。您现在可以使图像的分辨率增加一倍。我相信这很简单,因为必须将图像的原始尺寸和原始名称一起图像化,第二个图像名称为“@ x2”或“@ 2”,尺寸/分辨率是其两倍。 – Matt 2010-12-20 17:55:33

+0

@Matt - 不,最大纹理尺寸的差异不是由于iPhone 4引起的,而是它所使用的GPU的固有限制。自iPhone iPhone 2.0以来,我已经能够使用2048 x 2048图层和纹理,因此与新的Retina显示功能无关。这只是苹果公司文档与实际硬件不同的一种情况,这可能只是他们在未来GPU规格发生变化时保守。 – 2010-12-20 18:03:09

+0

PowerVR SGX的最高分辨率为2048关于图像:我们发现如果图像太大或内存不足,我们的应用程序不会崩溃。 ios会丢弃其他未显示的图像,然后当你回到它们时,它们只是在那里出现。控制台显示内存警告。 – twerdster 2010-12-22 22:46:17

相关问题