图像加载系统

自 2015 年开始提供图像服务

使用简单而灵活的 API 从不同的来源加载图像,并在您的应用程序中显示它们。利用强大的图像处理能力和可靠的缓存系统。

该框架精简,编译时间不到 2 秒¹。它拥有一个代码库大小两倍的自动化测试套件,确保出色的可靠性。Nuke 针对性能进行了优化,其先进的架构使几乎无限的自定义成为可能。

内存和磁盘缓存 · 图像处理与解压缩 · 请求合并与优先级 · 预取 · 可恢复下载 · 渐进式 JPEG · HEIF、WebP、SVG、GIF · SwiftUI · Async/Await

赞助商

Lapse: 朋友而非粉丝

Lapse Logo

Nuke 也得到了以下公司的支持

Proxyman Logo

Proxyman

Backspace Travel

Backspace Travel

安装

Nuke 支持 Swift Package Manager,这是推荐的选项。 如果这不适合您,您可以使用附加到发布的二进制框架。

该软件包附带四个模块,您可以根据需要安装

模块 描述
Nuke 包含 ImagePipelineImageRequest 等的精简核心框架
NukeUI UI 组件:LazyImage (SwiftUI) 和 ImageView (UIKit, AppKit)
NukeExtensions UIImageView 的扩展 (UIKit, AppKit)
NukeVideo 用于解码和播放短视频的组件

文档

得益于其丰富的文档和现代 API,Nuke 易于学习和使用。

您可以使用精简核心 Nuke 模块中的 ImagePipeline 加载图像

func loadImage() async throws {
    let imageTask = ImagePipeline.shared.imageTask(with: url)
    for await progress in imageTask.progress {
        // Update progress
    }
    imageView.image = try await imageTask.image
}

或者您可以使用来自 NukeUI 模块的内置 UI 组件

struct ContentView: View {
    var body: some View {
        LazyImage(url: URL(string: "https://example.com/image.jpeg"))
    }
}

入门指南 是开始学习框架提供的这些和其他许多 API 的最佳地点。查看 Nuke Demo 以获取更多使用示例。

Nuke Docs

扩展

图像管道易于定制和扩展。查看以下由社区构建的一流扩展和软件包。

名称 描述
Alamofire 插件 使用 Alamofire 替换网络层
NukeWebP 社区WebP 支持,由 Maxim Kolesnik 构建
WebP 插件 社区WebP 支持,由 Ryo Kosuge 构建
AVIF 插件 社区AVIF 支持,由 Denis 构建
RxNuke 用于 Nuke 的 RxSwift 扩展,带有示例

正在寻找一种记录您的网络请求(包括图像请求)的方法? 查看 Pulse

最低要求

从以前的版本升级?使用迁移指南

Nuke 日期 Swift Xcode 平台
Nuke 12.0 2023 年 3 月 4 日 Swift 5.7 Xcode 15.0 iOS 13.0, watchOS 6.0, macOS 10.15, tvOS 13.0
Nuke 11.0 2022 年 7 月 20 日 Swift 5.6 Xcode 13.3 iOS 13.0, watchOS 6.0, macOS 10.15, tvOS 13.0
Nuke 10.0 2021 年 6 月 1 日 Swift 5.3 Xcode 12.0 iOS 11.0, watchOS 4.0, macOS 10.13, tvOS 11.0

从 12.3 版本开始,Nuke 还支持 visionOS (beta 版)

许可证

Nuke 在 MIT 许可证下可用。有关更多信息,请参见 LICENSE 文件。


¹ 在 MacBook Pro 14" 2021 (10 核 M1 Pro) 上测量