GitHub 第三方插件 --- SDWebImage


SDWebImage 该库提供了一个支持缓存的异步图像下载器。为方便起见,我们为 UI 元素添加了类别,例如UIImageView、UIButton、MKAnnotationView。

注:SD是Simple Design的前缀(这是作者Olivier Poitrey在Daily Motion公司的团队名称)

github 的地址在这里

特征

  • UIImageView, UIButton,MKAnnotationView添加 web 图像和缓存管理的类别
  • 异步图片下载器
  • 具有自动缓存过期处理的异步内存 + 磁盘映像缓存
  • 背景图像解压缩以避免帧率下降
  • 渐进式图像加载(包括动画图像,如 Web 浏览器中显示的 GIF)
  • 缩略图图像解码以节省大图像的 CPU && 内存
  • 可扩展的图像编码器,支持海量图像格式,如 WebP
  • 动态图像的全栈解决方案,在 CPU && 内存之间保持平衡
  • 下载后可立即对图像应用可定制和可组合的转换
  • 可定制的多缓存系统
  • 可定制的多个加载器系统以扩展功能,例如照片库
  • 图像加载指示器
  • 图片加载过渡动画
  • 保证不会多次下载相同的 URL
  • 保证不会一次又一次地重试虚假 URL
  • 保证主线程永远不会被阻塞
  • 现代 Objective-C 和更好的 Swift 支持

对于Apple visionOS

从5.18.0开始,SDWebImage可以为visionOS平台编译。
然而,它仍然处于测试阶段,可能包含与稳定的iOS UIKit支持不同的问题。

为了构建VisionOS,目前我们只支持标准的Xcode集成。

支持的图像格式

  • 苹果系统支持的图像格式(JPEG、PNG、TIFF、BMP…),包括GIF / APNG动画图像
  • 来自 iOS 11/macOS 10.13 的 HEIC 格式,包括来自 iOS 13/macOS 10.15 通过
    SDWebImageHEICCoder 的动画HEIC。对于较低的固件,使用编码器插件SDWebImageHEIFCoder
  • 来自iOS 14/macOS 11.0的 WebP
    格式,通过SDWebImageAWebPCoder。对于较低的固件,请使用编码器插件SDWebImageWebPCoder
  • 支持 BPG、AVIF 等新图像格式的可扩展编码器插件。以及PDF、SVG等矢量格式。查看图像编码器插件列表中的所有列表

附加模块和生态系统

为了保持SDWebImage的重点和仅限于核心功能,同时也允许可扩展性和自定义行为,在5.0重构期间,我们专注于将库模块化。因此,我们已经将/构建新模块转移到SDWebImage org。

SwiftUI

SwiftUI是一个用Swift编写的创新UI框架,用于在所有苹果平台上构建用户界面。

我们通过构建一个名为SDWebImageSwiftUI的全新框架来支持SwiftUI,该框架建立在SDWebImage核心功能(缓存、加载和动画)之上。

新框架为SwiftUI世界引入了两个视图结构WebImage和AnimatedImage,任何视图的ImageIndicator修饰符,数据源的ImageManager可观察对象。

支持iOS 13+ / macOS 10.15+ / tvOS 13+ / watchOS 6+和Swift 5.1。

其他图像格式的编码器

  • SDWebImageWebPCoder - WebP格式编码器。iOS 8+/macOS 10.10+。基于libwebp
  • SDWebImageHEIFCoder - HEIF格式编码器,支持iOS 8+/macOS 10.10+。基于libheif
  • SDWebImageBPGCoder - BPG格式的编码器。基于libbpg
  • SDWebImageFLIFCoder - FLIF格式的编码器。基于libflif
  • SDWebImageAVIFCoder - AVIF(基于AV1)格式的编码器。基于libavif
  • SDWebImagePDFCoder - PDF矢量格式编码器。使用内置框架
  • SDWebImageSVGCoder - SVG矢量格式编码器。使用内置框架
  • SDWebImageSVGNativeCoder - SVG原生矢量格式编码器。基于svg-native
  • SDWebImageLottieCoder - Lottie动画格式的编码器。基于rlottie

自定义缓存

  • SDWebImageYYPlugin - 支持使用YYCache缓存图像的插件
  • SDWebImagePINPlugin - 支持使用PINCache缓存图像的插件

定制装载机

  • SDWebImagePhotosPlugin - 支持从照片加载图像的插件(使用Photos.framework)
  • SDWebImageLinkPlugin -
    支持从富链接网址以及LPLinkView加载图像的插件(使用LinkPresentation.framework)

与第三方库集成

  • SDWebImageLottiePlugin - 支持 Lottie-iOS的插件,用远程JSON文件撕裂矢量动画
  • SDWebImageSVGKitPlugin - 支持SVGKit、使用Core Animation、iOS 8+/macOS
    10.10+支持SVG渲染的插件
  • SDWebImageFLPlugin - 支持FLAnimatedImage作为动画GIF引擎的插件
  • SDWebImageYYPlugin - 用于集成YYImage和YYCache进行图像渲染和缓存的插件

兼容性

iOS 9.0或更高版本
tvOS 9.0或更高版本
watchOS 2.0或更高版本
macOS 10.11或更高版本(Catalyst为10.15)
Xcode 11.0或更高版本

向后兼容性

对于iOS 8、macOS 10.10或Xcode < 11,请使用高达5.9.5的任何5.x版本
对于iOS 7、macOS 10.9或Xcode < 8,请使用高达44.6的任何4.x版本
对于macOS 10.8,使用高达4.3.0的任何4.x版本
对于iOS 5和6,使用高达3.7.6的任何3.x版本
对于iOS < 5.0,请使用最新版本2.0。

如何使用

OC

#import <SDWebImage/SDWebImage.h>

[imageView sd_setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
             placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

Swift

import SDWebImage

imageView.sd_setImage(with: URL(string: "http://www.domain.com/path/to/image.jpg"), placeholderImage: UIImage(named: "placeholder.png"))

动画图像(GIF)支持

在5.0中,我们引入了一种支持动画图像的全新机制。这包括动画图像加载、渲染、解码,还支持自定义(适用于高级用户)。

此动画图像解决方案适用于iOS/tvOS/macOS。SDAnimatedImage是UIImage/NSImage的子类,SDAnimatedImageView是UIImageView/NSImageView的子类,以使它们与通用框架API兼容。

SDAnimatedImageView支持熟悉的图像加载类别方法,类似于UIImageView/NSImageView的下拉式替换。

没有UIView(如WatchKit或CALayer)?您仍然可以使用播放器引擎SDAnimatedPlayer进行高级播放和渲染。

OC

SDAnimatedImageView *imageView = [SDAnimatedImageView new];
SDAnimatedImage *animatedImage = [SDAnimatedImage imageNamed:@"image.gif"];
imageView.image = animatedImage;

Swift

let imageView = SDAnimatedImageView()
let animatedImage = SDAnimatedImage(named: "image.gif")
imageView.image = animatedImage

安装

在项目中使用 SDWebImage 有四种方法:

  • CocoaPods

CocoaPods是Objective-C的依赖管理器,它自动化并简化了在项目中使用第三方库的过程。有关更多详细信息,请参阅入门部分。

Podfile

platform :ios, ‘8.0’
pod ‘SDWebImage’, ‘~> 5.0’

快速和静态框架

Swift项目之前必须使用use_frameworks!让所有Pod成为动态框架,让CocoaPods工作。

platform :ios, ‘8.0’
use_frameworks!
pod ‘SDWebImage’

子规格

现在有2个子规格可供选择:Core和MapKit(这意味着您只能安装部分SDWebImage模块。默认情况下,您只能获得Core,因此如果您需要MapKit,则需要指定它)。

Podfile示例:

pod ‘SDWebImage/MapKit’

  • Carthage

Carthage是Swift和Objective-C的轻量级依赖管理器。它利用CocoaTouch模块,比CocoaPods侵入性更小。

安装详情参考原文

  • Swift Package Manager

Swift软件包管理器(SwiftPM)是一个用于管理Swift代码分发以及C家族依赖的工具。从Xcode 11开始,SwiftPM与Xcode原生集成。

SDWebImage支持5.1.0版本的SwiftPM。要使用SwiftPM,您应该使用Xcode 11打开您的项目。单击File-> Swift Packages->Add Package Dependency,输入SDWebImage repo的URL。或者,您可以使用GitHub帐户登录Xcode,只需键入SDWebImage即可搜索。

选择软件包后,您可以选择依赖类型(标记的版本、分支或提交)。然后Xcode将为您设置所有内容。

如果您是框架作者并使用SDWebImage作为依赖项,请更新您的Package.swift文件:

let package = Package(
    // 5.1.0 ..< 6.0.0
    dependencies: [
        .package(url: "https://github.com/SDWebImage/SDWebImage.git", from: "5.1.0")
    ],
    // ...
)
  • 手动安装

安装详情参考原文

文章内容来自Github上的SDWebImage,若有版权问题请与博主联系。
GitHub:https://github.com/SDWebImage/SDWebImage

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敛柒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值