🖼️ 媒体

一个漂亮简单声明式方便跨平台(iOS、macOS & tvOS)经过单元测试的Apple PhotoKit封装API

Swift 5.3 Platforms Current Version Build status codecov License

❤️ 动机

我不喜欢PhotoKit的地方在于它不是声明式的,而且开发者必须考虑太多的细节。这就是我创建这个Swift包的原因,它将极大地提高你的PhotoKit代码的可读性

使用Albums.allalbum.photosPhotos.live 等轻松从照片库获取媒体。

此外,您可以以非常简单和健壮的方式对照片库执行许多操作,例如

查看下面的 API 部分了解更多。

请随时贡献。任何形式的贡献都非常欢迎!我可以保证,即使有良好的单元测试覆盖率,仍然有bug隐藏在某个地方🐛。

ℹ️ 安装

只需将此Swift包作为依赖项添加到您的Package.swift

.package(url: "https://github.com/crelies/Media.git", from: "0.1.0"),

📖 实现

这个Swift包通过许多常见的PhotoKit媒体类型的封装类型提供其功能

许多类型实现了静态工厂方法,以便开发者可以轻松访问和管理照片库。

除此之外,这个Swift包还包含一些简单且即用型的 SwiftUI视图,用于与照片库交互,例如 Camera 视图或 LivePhotoPhotoVideo 的实例视图。

核心功能通过 import MediaCore 提供。如果您想使用包含的 SwiftUI 视图,也需要 import MediaSwiftUI

这就是您需要知道的一切。现在让我们看看 API

🕹️ 示例

查看 Example 目录中的示例项目,以探索这个Swift包的强大功能。

🧭 API

本节概述了当前可用的功能。以下大多数内容应该是显而易见的。尽管如此,每个公共类型、函数和属性都已记录在案。如果Xcode自动完成有效,您应该在使用此Swift包提供的API时获得您需要的信息🚀。

媒体 (Media)

相册 (Albums)

如果您只想按需获取相册,请使用 LazyAlbums 封装器(通过 LazyAlbums 类型上提供的 subscript 请求相册)。

相册 (Album)

内容 (Content)
C创建 & R读取
U更新 & D删除

音频 (Audios)

如果您只想按需获取音频,请使用 LazyAudios 封装器(通过 LazyAudios 类型上提供的 subscript 请求音频)。

音频 (Audio)

相机 (Camera)

实况照片 (LivePhotos)

如果您只想按需获取实况照片,请使用 LazyLivePhotos 封装器(通过 LazyLivePhotos 类型上提供的 subscript 请求实况照片)。

实况照片 (LivePhoto)

SwiftUI

照片 (Photos)

如果您只想按需获取照片,请使用 Media.LazyPhotos 封装器(通过 Media.LazyPhotos 类型上提供的 subscript 请求照片)。

照片 (Photo)

SwiftUI

视频 (Videos)

如果您只想按需获取视频,请使用 LazyVideos 封装器(通过 LazyVideos 类型上提供的 subscript 请求视频)。

视频 (Video)

SwiftUI

🚀 @propertyWrapper

Media包还包括一些通用的属性包装器,您可以使用它们与照片库进行交互。

贡献

这是我在空闲时间创建的另一个开源项目。即使身兼全职工作和家庭,我也非常积极地为社区创建软件。我相信社区会推动事物向前发展。所以欢迎以任何方式做出贡献。修复错误、添加更多文档或添加全新的功能。只需在完成后创建一个 pull request,我会查看它。请注意,我会提供反馈以确保尽可能高的质量 🙂