原始碼閱讀:SDWebImage(五)——SDWebImageFrame

堯少羽發表於2018-05-31

該文章閱讀的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

相關文章