ios - 为 iOS 应用找到最佳图像尺寸并减少内存使用

标签 ios swift

我有一个用 Swift 编写的通用游戏,其中包含大约 200 张图像,占用大约 200 MB 的内存。然而,在存储上它们只占用 15MB。在 Xcode 上,默认 View 的大小是 600x600,而我的 UIImageView 所在的 View 是 200x200。 我的目标是拥有一个使用最少内存和存储空间但保持其质量的图像。

对于公羊: 我是否应该在显示图像之前运行一些代码来调整图像大小以使用更少的内存,我担心这可能会稍微占用 CPU。

对于存储空间: 有没有一种方法可以计算满足所有 iOS 设备所需的图像尺寸?

还是我的看法完全错误。

最佳答案

Assets 目录将是为不同设备提供不同 Assets 的最有效方式,同时享受“app thinning”,它可以让设备只下载该特定设备所需的 Assets (保持应用程序下载量尽可能小)尽可能)。

例如,如果你有一个 200x200 的 ImageView ,如果你想为不同类型的设备提供最高的内存效率,你将有 1x(即 200x200)、2x(即 400x400)和 3x(即 600x600) ) 再现该 Assets ,并通过 Assets 目录的效率,设备将下载并使用适合该设备的规模的 Assets 。

另一方面,如果您只提供 1x 图像(例如我们上面示例中的 200x200 图像),它在视网膜设备上看起来会像素化,这会让很多用户望而却步。或者你可以只提供一个 3x 图像(例如 600x600 图像),它在所有设备上看起来都很清晰,但是你会占用比非视网膜设备所需的更多的内存(或者,如果你及时做调整大小,您可以抵消内存影响,但会以性能为代价)。

因此,如果您想要在多 scale 分辨率的设备上运行良好的最佳外观和最灵敏的 UI,您需要提供所有三种分辨率。而且,如果您使用 Assets 目录,它会在运行时更轻松地选择 Assets ,并打开应用程序瘦身的可能性。

关于ios - 为 iOS 应用找到最佳图像尺寸并减少内存使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40137045/

相关文章:

ios - 使用 NSURL 无法识别 URL 变量

ios - 如何更改按钮单击时 UICollectionView 的高度

ios - iOS 中额外的 CALayer 的子层

ios - 容器 View 中的 UIPageViewController

ios - Xcode 修复内存问题

ios - 如何使用 NS_DESIGNATED_INITIALIZER 并覆盖 init?

ios - 如何从字符串中获取 NSDate 而不将其转换为 UTC

ios - 在 iOS 7 中使用 applicationDidEnterBackground : 应用程序进入后台时无法更新 View

ios - 在 swift 4 中使用 webkit 在 webView 中导航时创建事件指示器

UIButton 的 Swift addTarget 在 UIView 中不起作用