Guiso
Guiso是一个为iOS设计的图像加载框架,它封装了多媒体解码、内存和磁盘缓存。默认情况下,Guiso使用URLSession。支持获取、解码和显示视频静态画面、图片和动画GIF。Guiso主要关注使各种类型的图像列表滚动尽可能平滑、快速,但Guiso对于几乎任何需要从远程获取、调整大小和显示图像的用例也都很有效。
需求
ios platform 11
安装
Guiso可通过CocoaPods获取。要安装它,只需将以下行添加到您的Podfile中。
pod 'Guiso'
示例
要运行示例项目,首先克隆仓库,然后从示例目录运行pod install
。
功能
- Web URL
- 本地URL
- 本地资源标识符
- 数据
- 自定义模型和加载器
- 自定义变换
- 自定义GifDecoder
- 预加载
- 缩略图、占位符、错误、回退
- 选项
用法
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").asGif().into(myViewTarget)
Guiso.load(Data).asGif().into(myViewTarget)
优先级
完成加载任务的优先级。如果有多个加载任务同时排队,优先级更高的任务将最先开始运行。优先级是尽力而为的原则,不能保证加载任务的开始和结束顺序。
- 背景
- 低
- 正常
- 高
标题
用于加载图像的头部
let headers = GuisoHeader().addHeader(key:"Authorization",value:"token")
Guiso.load(urlWeb).headers(headers).into(target)