AsyncImageView 包含一个简单的在 UIImageView 上的分类,用于在 iOS 中异步加载和显示图片,这样就不会锁定 UI,以及一个具有更多高级特征的 UIImageView 子类。AsyncImageView 与 URL 一起工作,因此它可以用于本地或远程文件。
加载/下载的图片会缓存在内存中,并在内存警告发生时自动清理。AsyncImageView 独立于 UIImage 缓存运行,但默认情况下,位于应用包根目录中的任何图片都将存储在 UIImage 缓存中,避免缓存图片的重复。
该库还可以用于独立于 UIImageView 加载和缓存图片,因为它提供了对底层加载和缓存类的直接访问。
注意:'支持' 表示库已针对此版本进行测试。'兼容' 表示库应在 iOS 版本上运行(即它不依赖于任何不可用的 SDK 功能),但不再为此版本的兼容性进行测试,可能需要调整或错误修复以正确运行。
自 1.5 版本起,AsyncImageView 需要 ARC。如果您希望在不支持 ARC 的项目中使用 AsyncImageView,只需将 -fobjc-arc 编译器标志添加到 AsyncImageView.m 文件中。为此,请转到您的目标设置中的 '构建阶段' 选项卡,打开 '编译源' 组,双击列表中的 AsyncImageView.m,并在弹出菜单中键入 -fobjc-arc。
如果您希望将整个项目转换为 ARC,请取消注释 AsyncImageView.m 中的 #error 行,然后在 Xcode 中运行 '编辑 > 重构 > 转换为 Objective-C ARC...' 工具,并确保您希望使用 ARC 的所有文件都已勾选(包括 AsyncImageView.m)。
AsyncImageView 在内部使用线程,但 AsyncImageView 的所有外部接口都不是线程安全的,您不应在除主线程之外调用任何 AsyncImageView 类的任何方法或设置任何属性。
要在一个应用中使用 AsyncImageView,只需将 AsyncImageView 类文件拖入您的项目中。
您可以像使用带UIImageView一样使用AsyncImageView类。如果想在Interface Builder中使用它,像往常一样将一个普通的UImageView或媒体图片拖到视图中,然后在检查器中将它的类更改到AsyncImageView。
在某些情况下无法使用AsyncImageView时,例如UIButton或UITableView中嵌入的imageView,UIImageView分类意味着您仍然可以将imageURL属性设置在imageView上以在后台加载图片。但是,这样您将无法获得AsyncImageView类的先进功能(如加载指示器),除非您自己重新实现。
要加载或下载图片,将imageURL属性设置为所需图片的URL。这可以是远程URL或指向应用程序包或文档文件夹的本地文件URL。
如果想在图像加载期间显示占位符图片,只需手动设置UIImageView的图片属性为您的占位符图片,一旦通过URL指定的图片加载完毕,它将被覆盖。
如果您想在主要图片加载的同时异步加载较小的缩略图,只需先设置缩略图URL,然后是完整图片URL。AsyncImageLoader将确保图片按正确顺序加载。如果大图片已经缓存,或由于某些原因先加载,则取消缩略图图片加载。
要检测图片加载完成,可以使用NSNotificationCenter结合AsyncImageLoadDidFinish
通知,或者您可以使用KVO(键值观察)在UIImageView的图片属性上设置观察者。当图片加载完成时,将设置图片,您可以使用KVO来检测并相应地做出反应。
默认情况下,所有加载的图片都会被缓存,如果应用加载大量图片,缓存将不断累积,直到触发内存警告。您可以通过根据您自己的维护逻辑手动从缓存中删除项来避免内存警告。您还可以通过在加载图片前将共享AsyncImageLoader的cache属性设置为nil
来禁用缓存,或对特定图片禁用缓存(加载图片后将其设置回[AsyncImageLoader sharedInstance]
以重新启用缓存)。
版本1.6
版本1.5.1
版本1.5
版本1.4
版本1.3
版本1.2.3
版本1.2.2
版本1.2.1
版本1.2
版本1.1
版本1.0