Guiso
Guiso 是一个支持媒体解码、内存和磁盘缓存的 iOS 图像加载框架。默认情况下,Guiso 使用 URLSession。支持获取、解码和显示视频静态画面、图片和动画 GIF。Guiso 的主要关注点是使滚动任何类型的图片列表尽可能地平滑和快速,但是 Guiso 也几乎适用于您需要获取、调整大小并发布远程图片的任何情况。
需求
ios developer target 10.0
安装
Guiso 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中
pod 'JJGuiso'
示例
要运行示例项目,请先克隆存储库,然后从 Example 目录运行 pod install
。
特性
- 网络 URL
- 本地 URL
- 本地标识符
- 数据
- 自定义模型和加载器
- 自定义变换
- 自定义动画图像解码器
- 预加载
- 缩略图、占位符、错误、回退
- 选项
使用说明
Guiso将结果发送给实现了ViewTarget协议的视图。
使用GuisoView。
import Guiso
let img = GuisoView() // ViewTarget
Guiso.load(url).into(img)
//by default caching is disabled for Data object.
Guiso.load(data).into(img)
//There's no efficient way to compute a cache name for a byte array.
// You can supply your own name using signature(). short names "IMG_WA\(self.count)"
Guiso.load(data).signature("IMG_WA001").into(img)
ViewTarget
目标负责显示加载的资源。GuisoView使用ImageView显示GIF和UIImage。用户也可以实现自己的目标。
class MyViewTarget : ViewTarget {
}
变换
在Guiso中,变换接收一个资源,对其进行修改,并返回修改后的资源。通常变换用于裁剪或调整UIImage的大小,但也可以用于变换动画GIF。
fitCenter(aspectFit): 对图像进行均匀缩放(保持图像的纵横比),使得图像的一个维度等于指定的维度,另一个维度小于指定的维度。
centerCrop(aspectFill)
调整图像大小,使得图像的宽度等于给定的宽度,或高度大于给定的宽度,然后裁剪较大的维度以匹配给定的维度。不保持图像的纵横比
应用变换
let width = 200
let height = 200
let view = GuisoView()
Guiso.load(url).fitCenter().override(width,height).into(view)
Guiso.load(Data).centerCrop().override(width,height).into(view)
动画GIF
Guiso.load("url").asAnimatedImage().into(myViewTarget) // gif
动画WebP
// use https://cocoapods.org.cn/pods/JJGuisoWebP
//create a class and implement AnimatedImageDecoderProtocol
let decoder: AnimatedImageDecoderProtocol = MyClass()
Guiso.load("url").asAnimatedImage().animatedImageDecoder(decoder).into(myViewTarget) // gif
优先级
完成加载的优先级。如果同时有多个加载任务排队,优先级较高的任务将首先启动。优先级被视为最佳尝试,无法保证加载任务开始或结束的顺序。
- 背景
- 低
- 普通
- 高
标题
用于加载图像的标题
let headers = GuisoHeader().addHeader(key:"Authorization",value:"token")
Guiso.load(urlWeb).headers(headers).into(target)