【问题标题】:Interface builder images from the document folder来自文档文件夹的界面构建器图像
【发布时间】:2011-09-13 06:41:38
【问题描述】:

我需要支持 Retina 显示,但应用程序尺寸必须很小。因此,我计划以非视网膜显示启动应用程序,然后获取视网膜图像 [如果需要] 并切换到视网膜显示图像。 唯一的问题是我的一些 UIViews 是用 interface builder 构建的,据我所知,interface builder 的图像源是主要捆绑包,而视网膜图像将被下载到文档文件夹中。

有没有办法让界面构建器在运行时处理一个新的捆绑包?

问候 M

【问题讨论】:

  • 为什么要让应用程序这么小?视网膜图像不应该增加那么多,除非你有大量的图像,在这种情况下,应用程序无论如何都不会小!
  • 我们在令人兴奋的应用程序中编写了一个模块,该应用程序的大小已经约为 17 MB。我们不允许通过 19 MB 的障碍,因为如果我们这样做,用户将收到“此应用大小超过 20 MB”警报(此警报会影响下载次数...)

标签: iphone ios interface-builder uiimage retina-display


【解决方案1】:

界面构建器用于预先构建您的界面并将整个事物打包为一体式数据包。它从主包中获取图像。而且你不能在运行时写入主包......所以......你被卡住了。

但是……

如果您确实需要您所说的动态工作方式,并且希望能够从 Document 文件夹中获取界面显示的图像,您可以这样做:

为方便起见,将低分辨率图像保存到您的 IB 中,以“查看”您正在处理的内容。但是,在 viewDidLoad 中,对于使用图像的每个项目,检查是否必须显示高分辨率图像,然后动态更改其 .image 属性,从 Document 文件夹加载高分辨率图像。要做到这一点,你需要一些 IBOutlets,但这会起作用。

【讨论】:

  • 嘿,奥利弗,我已经在考虑编写一个类别,一旦 viewLoaded(子视图...),它将传递所有 UIImage,但这很讨厌 :) 无论如何谢谢!
【解决方案2】:

虽然我认为图像不会对您的应用程序大小产生太大影响,除非它们当然不是 PNG,但您可以阅读更多详细信息 here

其他解决方案是将所有图像保存在服务器上,当用户第一次打开应用程序时,您可以检查设备类型,即是否是 iPhone 4 和 3/3GS,并根据它下载相关图像。

【讨论】:

    猜你喜欢
    • 2022-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多