【问题标题】:How to render UIImage async?如何异步渲染 UIImage?
【发布时间】:2012-10-18 06:14:30
【问题描述】:

我需要异步绘制图像,但 [UIImageView setImage:someImage] 不是线程安全的。所以我必须自己实现一个线程安全的draw函数。

在 iOS 中可以吗?如何?我知道如何使用 Quartz 进行自定义绘图。

特别感谢!

【问题讨论】:

  • 请访问我的答案异步图片stackoverflow.com/questions/12947523/…
  • 但 SDWebImage 在主线程中渲染图像
  • 所有接口的改变必须在主线程中完成。在后台线程上执行界面更改不会更新界面。 SDWebImage 是一个异步图片下载和缓存库,这不就是你想要的,async UIImage 就像你的标题建议的那样吗?

标签: iphone ios uiimage


【解决方案1】:

通常您只需要在后台加载图像。然后将它们绘制在前景线程上。看看这里 loading images from a background thread using blocks

【讨论】:

  • 我想在背景中绘制它们以使它们的容器滚动视图更流畅
  • 您能否详细介绍一下您要实现的目标的背景?我还在想,在后台加载可能是你想要的......
  • UIImage 已经从本地文件加载,并在后台线程中使用 QuartzCore 调整为较小的大小。现在我想将内存中的 UIImage 渲染到后台屏幕。
【解决方案2】:

您可以使用CALayerdrawsAsynchronously 属性并实现自己的imageView/imageLayer。这可能有助于提高 GUI 的响应能力。

【讨论】:

  • 如果我应该让它与iOS5兼容,drawsAsynchronously在iOS6中实现
  • 也许你可以使用 CATiledLayer 来做异步绘图
猜你喜欢
  • 2019-02-15
  • 1970-01-01
  • 2016-02-28
  • 1970-01-01
  • 2019-02-03
  • 1970-01-01
  • 2015-01-27
  • 2018-02-11
  • 2023-03-26
相关资源
最近更新 更多