该文章阅读的SDWebImage的版本为4.3.3。
根据SDWebImage
作者的描述,这个类是用来帮助创建动图的。
1.接口文件
- 属性
/** 当前帧的图像 */@property (nonatomic, strong, readonly, nonnull) UIImage *image;/** 当前帧的展示时间,单位是秒 */@property (nonatomic, readonly, assign) NSTimeInterval duration;复制代码
- 方法
/** 以指定图像和时长实例化本类对象 */+ (instancetype _Nonnull)frameWithImage:(UIImage * _Nonnull)image duration:(NSTimeInterval)duration;复制代码
2.实现文件
- 类扩展属性
@property (nonatomic, strong, readwrite, nonnull) UIImage *image;@property (nonatomic, readwrite, assign) NSTimeInterval duration;复制代码
因为接口文件中属性的关键字有readonly
,是只读的,所以在类方法中就无法赋值,因此就在类扩展中添加可读写属性。
- 方法实现
+ (instancetype)frameWithImage:(UIImage *)image duration:(NSTimeInterval)duration { // 可以看到这就是一个非常标准的工厂方法 SDWebImageFrame *frame = [[SDWebImageFrame alloc] init]; frame.image = image; frame.duration = duration; return frame;}复制代码
3.总结
正如作者所说的,这个类就是一个辅助类,记录动图的每一帧及这一帧的展示时长,帮助创建动图。
源码阅读系列:SDWebImage