1

我有杂志应用程序,我想知道是否有任何方法可以预加载 UIView 和 UIImages?

我的观点结构:

MagazineView
  -> pageView
    -> imageContainerView
       -> image 
    -> imageContainerView
       -> image
    -> textView
  -> pageView
etc...

所以我的问题是 - 如何在视图可见之前预加载图像?我想用 3 或 5 页制作一些缓存,并制作用于加载视图的线程。有任何想法吗?

4

2 回答 2

0

我认为“预加载图像”意味着在实际使用它们之前下载它们,因此在显示它们时没有延迟。

您可以做的是首先使用 下载图像[NSData dataWithContentsOfURL:],然后将数据转储到使用writeToFile:atomically:NSData 实例上的文件中,或者简单地将数据保存在 NSData 中以供将来重用。

然后,当您需要它时,您可以使用[UIImage imageWithContentsOfFile]或创建 UIImage [UIImage imageWithData:]

请注意,如果您将缓存保存到文件中,请将这些文件保存在缓存文件夹中,而不是文档文件夹中,或者将它们标记为在同步到 iCloud 时跳过它们的属性,否则您的应用程序将被 Apple 拒绝。

另请记住,下载这些图像可能需要很长时间、超时或失败。您应该在后台线程中以不阻塞主线程的方式执行所有这些操作,具有应用程序未冻结的视觉指示器,并在下载失败或缓存被刷新的情况下进行后备(如果您保存图像到文件)

于 2012-06-15T12:49:12.167 回答
0

按照 J_D 的描述加载图像后,只需将它们放入 pageView 并将它们设置为 Hidden 为 YES。每次您想切换页面时,只需调用一些方法,该方法将预加载新图像并显示已下载的图像(将隐藏设置为 NO);-)。希望这将帮助您解决您的问题...

于 2012-06-18T06:58:05.207 回答