首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >IOS -处理大量图像的最佳实践(性能+磁盘上的大小)

IOS -处理大量图像的最佳实践(性能+磁盘上的大小)
EN

Stack Overflow用户
提问于 2015-07-21 13:07:35
回答 2查看 1.9K关注 0票数 7

我的应用程序UIKit存储大约100个(100x100) jpeg文件,这些文件应该用作“模式图像”。每个图像的平均大小有时类似于20~40 kb

我也是cocos2d-x开发人员。在cocos环境中,我使用plist“绑定”每个图像,而不是通过plist对其进行切割。这是一个很好的性能和大小保护程序,但据我所知,这在UIKit上是不可能的。

所以我的问题是,是否有更好的方法来存储/拖动这些映像,以提高磁盘容量和性能,而不是像往常一样将文件拖放到XCode中并使用?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-30 05:55:31

在iOS上,任何数量的映像都不是真正的问题,因为有一些高级缓存系统可以处理映像的重用。而且,iOS的渲染系统非常棒,所以您不必担心它。

虽然它当然有可能为精灵系统编程,但我不会建议你这么做。这种方法主要用于Web (因为每个图像都必须带有新的请求*注意HTTP/2不再正确),而且显然也用于游戏开发(因为绑定纹理调用越少,越好)。

还有一个很好的例子说明为什么不使用精灵--如果您正在开发Watch应用程序,并且您想做动画,您可以通过flipboard样式的图像(名为1.png -100.png的图像序列)来完成,而不是使用大型的图像地图集。虽然人们会猜测为什么他们会这样做(我猜是因为它在内部工作得有多好+蓝牙的吞吐量),但很明显,它也是苹果的首选,因此我们应该遵循。

对于iOS,有一些陷阱您应该知道:

  • 从网络加载的任何图像都不应该加载在主线程上,对于屏幕加载时没有显示的图像也是如此( UITableViewCell中的图像是一个很好的例子,因为当图像滚动时,如果图像很大,就可以看到迷你冻结)。
  • 如果您有很多层,那么使用alpha通道!= 1的图像会严重降低性能(但通常是不可避免的)。
  • 使用UIColor.colorWithPatternImage()创建的背景图像应该谨慎使用,因为这种方法被认为是有问题的(这里的细节)

现在,关于映像的异步加载,我建议您查看以下库:

它们都很棒,所以这确实是首选问题(我更喜欢Haneke ),但是它们允许您在不同的线程上下载图像,无论是从Web还是从您的包中下载。它们还为UIImageView提供了扩展,允许您使用一行函数轻松加载所有图像。

希望能帮上忙!

票数 2
EN

Stack Overflow用户

发布于 2015-07-30 14:12:44

如果这一点算上的话,iOS 9就会出现;)它被称为随需应变资源( On ),它允许你用苹果存储内容,并在需要的时候下载内容,等等。这对于游戏应用程序来说是很棒的,也是它们在WWDC中的一个例子。

看看这里:指南/指南

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31539924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档