SDWebImage 5.19.6

SDWebImage 5.19.6

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布最后发布2024年8月

由Bogdan Poplauschi、Olivier Poitrey、DreamPiggy、Olivier Poitrey 维护。



SDWebImage 5.19.6

  • By
  • Olivier Poitrey

Build Status Pod Version Pod Platform Pod License Carthage compatible SwiftPM compatible Mac Catalyst compatible codecov

此库提供一个具有缓存支持的异步图像下载器。为了方便,我们为 UI 元素(如 UIImageViewUIButtonMKAnnotationView)添加了分类。

注意:SD简单设计(Simple Design) 前缀,这是作者 Olivier Poitrey 所在的 Daily Motion 公司团队名称。

功能

支持的图像格式

附加模块和生态系统

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

SwiftUI

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

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

新框架引入了两个视图结构 WebImageAnimatedImage,以供 SwiftUI 世界使用,以及 ImageIndicator 修饰符用于任何视图,还有一个用于数据源的可观察对象 ImageManager。支持 iOS 13+/macOS 10.15+/tvOS 13+/watchOS 6+ 和 Swift 5.1。试试看并给我们反馈!

支持更多图像格式的编解码器

自定义缓存

自定义加载器

  • SDWebImagePhotosPlugin - 插件以支持从Photos(使用Photos.framework)加载数据
  • SDWebImageLinkPlugin - 支持从富链接URL加载图片的插件,以及 LPLinkView (使用 LinkPresentation.framework)

与第三方库集成

社区驱动的流行库

让我们的生活变得更简单

你可以直接使用这些组件,或者使用SDWebImage的可定制架构创建自己的类似组件。

需求

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

向后兼容性

开始使用

谁在使用它

沟通

  • 如果您需要帮助,请使用 Stack Overflow。 (标签 'sdwebimage')
  • 如果您想询问一般问题,请使用 Stack Overflow
  • 如果您发现了bug,请提交一个问题。
  • 如果您有功能请求,请提交一个问题。
  • 如果您需要IRC频道,请使用 Gitter

贡献

如何使用

  • Objective-C
#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,这是一种用于高级播放和渲染的播放引擎。

有关更多详细信息,请参阅动画图像

  • Objective-C
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

FLAnimatedImage的集成有自己的专用仓库

为了整理代码并将核心项目的工作范围缩减,我们决定FLAnimatedImage的集成不应该放在这里。从5.0版本开始,这个功能仍然可用,但将放置在专用仓库SDWebImageFLPlugin中。

安装

有四种方法可以将SDWebImage应用到您的项目中

  • 使用CocoaPods
  • 使用Carthage
  • 使用Swift包管理器
  • 手动安装(构建框架或嵌入Xcode项目)

使用 CocoaPods 安装

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

Podfile

platform :ios, '8.0'
pod 'SDWebImage', '~> 5.0'
Swift 和静态框架

Swift 项目之前必须使用 use_frameworks! 将所有 Pods 转换为动态框架,以使 CocoaPods 的工作得以进行。

但是,从 CocoaPods 1.5.0+ 开始(需与 Xcode 9+ 一起使用),它支持将 Objective-C 和 Swift 代码构建为静态框架。您可以使用模块头文件来使用 SDWebImage 作为静态框架,无需使用 use_frameworks!

platform :ios, '8.0'
# Uncomment the next line when you want all Pods as static framework
# use_modular_headers!
pod 'SDWebImage', :modular_headers => true

更多信息请见CocoaPods 1.5.0 — Swift 静态库

如果不这样做,您仍需要添加 use_frameworks! 才能将 SDWebImage 作为动态框架使用

platform :ios, '8.0'
use_frameworks!
pod 'SDWebImage'

子规格

目前有以下两种子规格可供选择:CoreMapKit(这意味着您可以只安装 SDWebImage 的一些模块。默认情况下,您只获得 Core,因此如果需要 MapKit,您需要指定它)。

Podfile 示例

pod 'SDWebImage/MapKit'

使用 Carthage 安装

Carthage 是为 Swift 和 Objective-C 设计的一个轻量级依赖管理器。它利用了 CocoaTouch 模块,并且比 CocoaPods 具有更少的侵入性。

要使用 Carthage 进行安装,请按照 Carthage 的说明进行操作。

Carthage 用户可以指向此仓库并使用它们喜欢的任何生成的框架:SDWebImage、SDWebImageMapKit 或两者都使用。

在您的 Cartfile 中添加以下条目:github "SDWebImage/SDWebImage" 然后运行 carthage update。如果您是第一次在项目中使用 Carthage,您需要按照 Carthage 解释的方式进行一些额外的步骤。

注意:目前,Carthage 无法提供仅构建特定仓库子组件的方法(或与 CocoaPods 的 subspecs 相当)。所有组件及其依赖项将按照上述命令进行构建。但是,您不需要将您未使用的框架复制到项目。例如,如果您没有使用 SDWebImageMapKit,可以在 carthage update 完成后从 Carthage Build 目录中删除该框架。

使用 Swift Package Manager(Xcode 11+)安装

Swift Package Manager(SwiftPM)是一个用于管理 Swift 代码以及 C 家族依赖的工具。从 Xcode 11 开始,SwiftPM 得到了 Xcode 的原生集成。

SDWebImage 从版本 5.1.0 开始支持 SwiftPM。要使用 SwiftPM,您应该使用 Xcode 11 打开您的项目。点击 文件 -> Swift 包 -> 添加包依赖关系,输入 SDWebImage 仓库的 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")
    ],
    // ...
)

手动安装指南

访问的手动安装指南以了解更多信息

在源文件中导入头文件

在需要使用该库的源文件中,导入总的头文件

#import <SDWebImage/SDWebImage.h>

还建议使用模块导入语法,该语法适用于CocoaPods(启用 modular_headers)/Carthage/SwiftPM。

@import SDWebImage;

构建项目

此时你的工作区间应该可以无错误地构建。如果你遇到问题,请在问题区域发帖,社区可以帮你解决这个问题。

数据收集实践

根据App Store中对应用程序隐私详情的要求,以下是SDWebImage的数据收集实践列表。

作者

贡献者

致谢

感谢所有为 SDWebImage 做出贡献的人们。

Contributors

许可证

所有源代码均受 MIT 许可证 的许可。

架构

有关 SDWebImage 架构设计贡献的相关信息,请阅读 SDWebImage v5.6 架构核心。感谢 @looseyi 提供文章和翻译。

高级示意图

总体类图

顶级API图

主要序列图

更多详细图