ios - 重要的是 "weight"还是高度和宽度

标签 ios memory image-size

我正在为 iOS 平台开发一款包含大量图形的游戏。没有一个图形是动态的,它们都是现成的图像。屏幕上有 6 层,每层平均包含 3-4 个不断向左滚动的图形对象,每个图形对象的速度各不相同。因此,每次屏幕刷新时,大约有 20-25 个对象被滚动、从屏幕中移除并从右侧再次添加。该游戏是通用的,因此资源文件夹中会显示各种尺寸的图像。在 iPad、iPhone 5、iPhone 5s 上运行流畅。但在第 4 代 iPod touch 上,我注意到一些问题。 当我使用 Instruments 测试应用程序时,我注意到启动时存在严重的内存问题,然后问题就消失了。所以这都是因为我在应用程序启动时加载了上述所有图形。所有图像组合成 4 个不同的 Sprite 表。所以这是我的问题: 重要的是以千字节为单位的重量还是尺寸?我问这个是因为我将图像的大小减小了大约 70-80%,尽管它们的高度和宽度保持不变,但内存问题仍然存在。

最佳答案

如果您通过压缩来减小图像的大小,那么预计会有延迟和内存占用,因为图像在首次加载时未压缩,并且它们将占用与压缩前一样多的内存。

第 4 代 iPod Touch 可能存在一些内存压力,它会尝试在其他地方释放内存,以便让您的图像加载并保留在内存中。这可能是您看到的问题,因为其他应用程序(如 Mobile Safari 或 Mail)被要求放弃一些内存或终止。

(图像在资源文件夹中的大小无关紧要。重要的是它们在未压缩时和内存中的大小)。

您可以通过将图像设为 4 位而不是 8 位颜色来缩小图像,或者将它们设为单色。您还可以使用非视网膜尺寸或更小的尺寸,然后让操作系统拉伸(stretch)它们以适应所需的空间。我会尝试首先使用最好的图像,如果您收到内存警告 (didReceiveMemoryWarning),然后重新加载密度较低的图像。

关于ios - 重要的是 "weight"还是高度和宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26353796/

相关文章:

iphone - 定义将由类方法使用的私有(private)方法 - Objective C

ios - iPhone 锁定时继续播放音频

c++ - 如何释放 unordered_map 内存?

c# - 在Unity中,如何在场景卸载时从内存中删除RenderTexture

image - 很少有大图像与许多小图像

css - 如何调整我的 wordpress 标题图像的大小以扩展页面的全长?

ios - RestKit是否在不同线程上执行请求?

ios - iPhone不播放声音但模拟器可以播放声音

c - 堆内存中的一个奇怪问题!

php - 如何更改 WooCommerce 缩略图裁剪位置?