本文将介绍如何使用 SDWebImage 加载网络 TPG 图片。
安装 TPG SDK
使用 Cocoapods 集成
1. 在您工程 Podfile 文件中添加模块:
pod 'CloudInfinite/SDWebImage-CloudInfinite'pod 'CloudInfinite/TPG'
2. 在终端执行安装命令:
pod install
使用 SDWebImage 直接加载 TPG 图。
SDWebImage-CloudInfinite 模块在 app 启动时已自动将 TPG 解码器加入到 SDWebImage 解码器队列中,在加载解码器时自动找到 TPG 解码器来解码图片。支持动图,无需额外操作。使用时与 SDWebImage 使用没有任何区别。
Objective-C
[imageView sd_setImageWithURL:[NSURL URLWithString:@"TPG 图片链接"]];
swift
UIImageView() .sd_setImage(with: NSURL.init(string: ""))
说明:
图片链接可以携带万象处理参数。
使用 SDWebImage 指定加载 TPG 格式并携带万象处理参数。
SDWebImage-CloudInfinite 中 UIImageView+CI 类是模仿 SDWebImage 调用风格,封装了一组可以传入 transform 的方法。
Objective-C
// 构建 CITransformation 实例CITransformation * transform = [CITransformation new];// 设置 TPG 格式以及传参方式[transform setFormatWith:CIImageTypeTPG options:CILoadTypeUrlFooter];// transform 可以继续指定其他处理参数[transform setXXXX:];// 调用 UIImageView+CI 类种方法,加载图片[self.imageView sd_CI_setImageWithURL:[NSURL URLWithString:@"图片链接"] transformation:transform];
swift
let transform = CITransformation();transform.setFormatWith(CIImageFormat.typeTPG, options: CILoadTypeEnum.urlFooter);transform.setXXXX();UIImageView().sd_CI_setImage(with: NSURL.init(string: "图片链接"), transformation: transform)
设置加载失败后原图重试
说明:
SDWebImage-CloudInfinite 版本必须大于等于1.5.0
1. setLoadTPGAVIFImageErrorHandler 可以在回调里将 TPG 图片链接转换为普通图片链接。默认是将图片链接中 format/tpg 进行删除。
[UIView setLoadOriginalImageWhenError:YES];// 可选配置,SDK 内部将图片链接中 format/tpg 删除,如果不满足业务,则需自定义 TPG 链接转换原图链接策略。[UIView setLoadTPGAVIFImageErrorHandler:^NSString *(NSString * _Nonnull url) {NSString * newUrl = @"";/// 将 TPG 转换为原格式链接return newUrl;}];
2. TPG 失败后原图重试错误收集
原图重试方案主要用于提升用户体验,但是 TPG 加载失败错误信息还是需要收集,并根据错误信息来分析排查问题,解决问题。
[UIView setTPGAVIFImageErrorObserver:^(NSString * _Nonnull url, NSError * _Nonnull error) {// error 为解码失败的错误信息 可以在这里统一处理 TPG 加载失败的错误信息。}];