好吧,磁盘空间上的 700kb 图像并不意味着内存中的 700kb 图像。它在存储在磁盘上时会被压缩,但是当它被放入内存时 - 它会变大。
如果您在项目中使用大量图像,我建议您使用[UIImage imageWithContentsOfFile:]
方法。它不会在内部缓存图像,并且您对内存的控制比使用[UIImage imageNamed:]
.
对我来说,一般的经验法则是这样的。如果图像很大并且在应用程序中使用过一次 -> [UIImage imageWithContentsOfFile:]
,但如果图像在应用程序的许多地方重复使用 -> [UIImage imageNamed:]
。
此外,如果您必须使用 .png 格式,因为它具有透明度,那么您可以尝试给 .webp 一个机会。这种格式在 ios 中不受官方支持,但是在github上有一个自定义实现,您可以从中获取。
更新:
我个人根本不在我的应用程序中使用界面生成器,因为我发现它非常耗时且速度慢。相反,我以编程方式创建所有视图,这给了我更大的灵活性,比如在[UIImage imageWithContentsOfFile:]
or之间进行选择[UIImage imageNamed:]
。您可以只为您的 UIImageView 设置一个 Outlet,然后在代码中设置实际图像。至于 png,iOS 中没有首选的图像类型。这真的取决于你的情况。如果你需要透明度 -> png,只需要一个平面图像 -> jpg。这只是一个简单的例子。至于 .webp,正如我已经提到的,这种格式在 iOS 中并未得到官方支持,但您可以添加自己的支持。基本上,.webp 可以让您替换 .png 并减小项目文件夹的大小,而不会失去图像的透明度。
希望这会有所帮助,干杯!