美文网首页iOS优秀第三方库收集
KingFisher 介绍以及源码分析

KingFisher 介绍以及源码分析

作者: 微笑_d797 | 来源:发表于2019-03-11 18:25 被阅读0次

    Kingfisher是一个优秀的第三方图片处理优化三方,它是SDWebimage的Swift版本。

    特征

    1. 异步图像下载和缓存。
    2. 从基于会话的网络或本地提供的数据加载图像。
    3. 提供有用的图像处理器和过滤器。
    4. 内存和磁盘的多层混合缓存。
    5. 对缓存行为的精细控制。可自定义的到期日期和大小限制。
    6. 可取消下载和自动重用以前下载的内容以提高性能。
    7. 独立组件。根据需要分别使用下载器、缓存系统和图像处理器。
    8. 预取图像并从缓存中显示它们以增强应用程序。
    9. 用于uiImageView、nsImage、nsButton和uiButton的视图扩展,用于直接从URL设置图像。
    10. 设置图像时内置过渡动画。
    11. 加载图像时可自定义的占位符和指示器。
      12 .易于扩展的图像处理和图像格式。

    简单使用

    最简单的用例是使用“UIImageView”扩展名将图像设置为图像视图

    let url = URL(string: "https://example.com/image.png")
    imageView.kf.setImage(with: url)
    

    从“url”下载图像,将其发送到内存缓存和磁盘缓存,并显示在“imageview”中。稍后使用相同的URL进行设置时,将从缓存中检索图像并立即显示。

    高级用法

    1. 下载高分辨率图像。
    2. 缩小采样以匹配图像视图大小。
    3. 使其以给定的半径圆角。
    4. 下载时显示系统指示器和占位符图像。
    5. 准备好后,它会以“淡入”效果为小缩略图图像设置动画。
    6. 原始的大图像也被缓存到磁盘以供以后使用,以避免在详细视图中再次下载。
    7. 当任务完成时,将打印控制台日志,无论是成功还是失败。
    let url = URL(string: "https://example.com/high_resolution_image.png")
    let processor = DownsamplingImageProcessor(size: imageView.size)
                 >> RoundCornerImageProcessor(cornerRadius: 20)
    imageView.kf.indicatorType = .activity
    imageView.kf.setImage(
        with: url,
        placeholder: UIImage(named: "placeholderImage"),
        options: [
            .processor(processor),
            .scaleFactor(UIScreen.main.scale),
            .transition(.fade(1)),
            .cacheOriginalImage
        ])
    {
        result in
        switch result {
        case .success(let value):
            print("Task done for: \(value.source.url?.absoluteString ?? "")")
        case .failure(let error):
            print("Job failed: \(error.localizedDescription)")
        }
    }
    

    KingFisher的结构

    结构

    由于一个库分析过长,后面会分为几篇博客来分析这个库。这篇我们先来分析最外层的General文件夹,里面基本是这个库对外的api,有浅至深依次解析。后续会根据demo依次进行分析,打开demo运行


    demo

    Kingfisher-Basic
    未完待续

    相关文章

      网友评论

        本文标题:KingFisher 介绍以及源码分析

        本文链接:https://www.haomeiwen.com/subject/uorbpqtx.html