源码阅读:SDWebImage(五)——SDWebImageFrame

619 阅读1分钟

该文章阅读的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

源码阅读:SDWebImage(一)——从使用入手

源码阅读:SDWebImage(二)——SDWebImageCompat

源码阅读:SDWebImage(三)——NSData+ImageContentType

源码阅读:SDWebImage(四)——SDWebImageCoder

源码阅读:SDWebImage(五)——SDWebImageFrame

源码阅读:SDWebImage(六)——SDWebImageCoderHelper

源码阅读:SDWebImage(七)——SDWebImageImageIOCoder

源码阅读:SDWebImage(八)——SDWebImageGIFCoder

源码阅读:SDWebImage(九)——SDWebImageCodersManager

源码阅读:SDWebImage(十)——SDImageCacheConfig

源码阅读:SDWebImage(十一)——SDImageCache

源码阅读:SDWebImage(十二)——SDWebImageDownloaderOperation

源码阅读:SDWebImage(十三)——SDWebImageDownloader

源码阅读:SDWebImage(十四)——SDWebImageManager

源码阅读:SDWebImage(十五)——SDWebImagePrefetcher

源码阅读:SDWebImage(十六)——SDWebImageTransition

源码阅读:SDWebImage(十七)——UIView+WebCacheOperation

源码阅读:SDWebImage(十八)——UIView+WebCache

源码阅读:SDWebImage(十九)——UIImage+ForceDecode/UIImage+GIF/UIImage+MultiFormat

源码阅读:SDWebImage(二十)——UIButton+WebCache

源码阅读:SDWebImage(二十一)——UIImageView+WebCache/UIImageView+HighlightedWebCache