测试已测试 | ✗ |
Lang语言 | SwiftSwift |
许可证 | BSD |
发布最后发布 | 2017年9月 |
SwiftSwift 版本 | 3.1 |
SPM支持 SPM | ✗ |
由 Emory Al-Imam 和 Trevor Stout 维护。
依赖项 | |
Alamofire | ~> 4.4 |
CocoaLumberjack/Swift | ~> 3.1 |
YapDatabase | ~> 3.0 |
以下是如何请求全尺寸、解码图像并在 UIImageView
上设置图像响应的示例。
YapImageManager.sharedInstance.asyncImage(forURLString: URLString) { [weak self] response in
if let image = response.image {
self?.imageView.image = image
}
}
以下是如何获取特定尺寸的解码图像并在 UIImageView
上设置图像响应的示例。请求与您的 UIImageView
坐标界限匹配的图像大小可以提高滚动性能,并且避免在 GPU 上进行缩放。解码并缩放的图像将缓存在内存中,以减少 CPU 时间。
YapImageManager.sharedInstance.asyncImage(forURLString: URLString, size: self.bounds.size) { [weak self] response in
if let image = response.image {
self?.imageView.image = image
}
}
请求带有票证的图片对于使用具有回收单元格的 UITableView
或 UICollectionView
非常重要。当一个单元格被回收时,取消票证确保之前的图片请求不会完成并更新带有不同图片请求的新的单元格的图片。这也会通过取消在快速滚动时不再可见的单元格的任何不需要的下载请求来提高性能。以下是一个示例。
将 ticket
成员变量添加到您的类中...
private var ticket: ImageRequestTicket?
请求图片,保存票证...
ticket = YapImageManager.sharedInstance.asyncImage(forURLString: URLString, size: self.bounds.size) { [weak self] response in
if response.ticket == self?.ticket {
self?.ticket = nil
if let image = response.image {
self?.imageView.image = image
}
}
}
在 prepareForReuse
中取消票证...
override func prepareForReuse() {
super.prepareForReuse()
if let ticket = self.ticket {
YapImageManager.sharedInstance.cancelImageRequest(forTicket: ticket)
self.ticket = nil
}
}
以下是一个示例输出。
要渲染一个或多个图片滤镜的图片,只需在请求中通过一个包含 YapImageFilter
的数组。YapImageManager 有以下内置滤镜
YapAspectFillFilter
- 以内容模式填充方式绘制原图YapGradientFilter
- 从指定的 startColor
渲染渐变到 endColor
YapColorFilter
- 绘制背景颜色,或者根据是否包含 YapAspectFillFilter
绘制覆盖颜色YapOverlayImageFilter
- 绘制由 overlayImage
指定的自定义 UIImage
您可以通过采用协议 YapImageFilter
来创建自己的自定义滤镜。
以下是为图片添加渐变覆盖的示例。在使用滤镜时,请确保至少有一个滤镜渲染原始图片,例如使用 YapAspectFillFilter
。
let filters: [YapImageFilter] = [YapAspectFillFilter(), YapGradientFilter(startColor: UIColor.black.withAlphaComponent(0.5), endColor: .clear)]
YapImageManager.sharedInstance.asyncImage(forURLString: URLString, size: self.bounds.size, filters: filters) { [weak self] response in
if let image = response.image {
self?.imageView.image = image
}
}
以下是一个示例输出。
要使用滤镜渲染新图片,例如渐变,请使用 `createImage` 方法,传入所需大小和一个包含 YapImageFilter
的数组。以下示例生成一个简单的覆盖渐变。
let red = UIColor(red: 0.93, green:0.09, blue:0.31, alpha:1.0)
let gradient = YapGradientFilter(startColor: red, endColor: .clear)
YapImageManager.sharedInstance.createImage(withSize: self.bounds.size, filters: [gradient]) { [weak self] image in
self?.imageView.image = image
}
以下是一个示例输出。
YapImageManager 由 Yap Studios 所有并维护。