自 2015 年开始提供图像服务
使用简单而灵活的 API 从不同的来源加载图像,并在您的应用程序中显示它们。利用强大的图像处理能力和可靠的缓存系统。
该框架精简,编译时间不到 2 秒¹。它拥有一个代码库大小两倍的自动化测试套件,确保出色的可靠性。Nuke 针对性能进行了优化,其先进的架构使几乎无限的自定义成为可能。
内存和磁盘缓存 · 图像处理与解压缩 · 请求合并与优先级 · 预取 · 可恢复下载 · 渐进式 JPEG · HEIF、WebP、SVG、GIF · SwiftUI · Async/Await
Lapse: 朋友而非粉丝。
Nuke 也得到了以下公司的支持
![]() Proxyman |
Backspace Travel |
Nuke 支持 Swift Package Manager,这是推荐的选项。 如果这不适合您,您可以使用附加到发布的二进制框架。
该软件包附带四个模块,您可以根据需要安装
模块 | 描述 |
---|---|
Nuke | 包含 ImagePipeline 、ImageRequest 等的精简核心框架 |
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 以获取更多使用示例。
图像管道易于定制和扩展。查看以下由社区构建的一流扩展和软件包。
名称 | 描述 |
---|---|
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) 上测量