图像加载系统
自2015年起提供图像服务
使用简单灵活的API从不同来源加载图像并在您的应用中显示。利用强大的图像处理能力和健壮的缓存系统。
该框架精简,编译时间不到2秒¹。它拥有一个代码库大小两倍的自动化测试套件,确保出色的可靠性。Nuke针对性能进行了优化,其先进的架构为定制提供了几乎无限的可能性。
内存和磁盘缓存 · 图像处理和解压 · 请求合并和优先级 · 预取 · 可恢复下载 · 渐进式JPEG · HEIF、WebP、SVG、GIF · SwiftUI · 异步/等待
赞助商
在GitHub Sponsors上支持 Nuke。
安装
Nuke支持Swift Package Manager,这是推荐的选项。如果这不适合您,您可以使用附加到releases的二进制框架。
该包提供四个模块,您可以根据需要安装:
模块 | 描述 |
---|---|
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 {
// 更新进度
}
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 Plugin | 用Alamofire替换网络层 |
NukeWebP | 社区。WebP支持,由Maxim Kolesnik构建 |
WebP Plugin | 社区。WebP支持,由Ryo Kosuge构建 |
AVIF Plugin | 社区。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支持(测试版)
许可证
Nuke 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。
¹ 在 MacBook Pro 14" 2021(10核M1 Pro)上测量