【问题标题】:UIView and UIImage preloadingUIView 和 UIImage 预加载
【发布时间】:2012-06-15 11:26:21
【问题描述】:

我有杂志应用,我想知道有没有办法预加载 UIView 和 UIImages?

我的观点结构:

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

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

【问题讨论】:

    标签: objective-c cocoa uiview uiimage preload


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 不,我已经下载了所有图像...当我的意思是预加载时,我的意思是在背景上绘制图像。谢谢回复...
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2013-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-15
      • 2012-06-14
      • 2011-12-25
      相关资源
      最近更新 更多