【问题标题】:Large Image Causes Crashing xCode大图像导致 xCode 崩溃
【发布时间】:2011-07-05 07:26:26
【问题描述】:

我的 xCode 项目中有一个 6000x3000 像素的图像,它位于可缩放视图中。在初始视图中,按下按钮以访问带有可缩放大图像的视图。这一切都很好,除了“加载”图像所花费的时间经常导致应用程序崩溃,尤其是当我在旧设备上进行测试时(它似乎在我的 4G itouch 上大部分时间都可以正常工作) .有没有办法“预渲染”这张大图,或者我可以做些什么来防止崩溃?

【问题讨论】:

  • 在调试模式下运行应用程序并将异常添加到您的帖子中,这可能有助于获得更相关的答案。
  • 尝试过索引颜色范围吗?我相信这可能适用于旧设备。

标签: iphone xcode image ios uiimageview


【解决方案1】:

算一下:6000 x 3000 x 3(红绿蓝)= 54,000,000 字节 = 51.5MiB 的原始数据。正常的图像处理有很多开销,而且会占用太多内存。

根据this question,解决方案是使用 CATiledLayer。据我了解,你需要将你的大图分割成更小的部分,并在 CATiledLayer 的帮助下绘制这些更小的部分。

编辑:这里引用 UIView 类参考:

注意:在 iOS 2.x 中,UIView 对象的最大尺寸为 1024 x 1024 点。在 iOS 3.0 和更高版本中,视图不再受限于这个最大尺寸,但仍然受到它们消耗的内存量的限制。保持视图尺寸尽可能小符合您的最大利益。无论运行的是哪个版本的 iOS,您都应该考虑平铺任何明显大于屏幕尺寸的内容。

阅读:如果较大,请使用 CATiledLayer 绘制较小的部分。

【讨论】:

  • 抱歉,当我点击“获取信息”时,我的图片显示只有 3 兆字节...对吗?
  • @user634324: 已压缩 可能只有 3MB,但要显示需要解压。然后内存消耗就是简单的width x height x depth。对于普通图像,深度为 3 个字节(红色、绿色和蓝色各一个)。如果是带有 alpha 通道(透明度)的图像,则深度为 4 个字节。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-28
  • 2018-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多