MediaPicker:SwiftUI 可定制媒体选择器库





项目名称:MediaPicker

MediaPicker 是一个开源的 SwiftUI 库,用于创建可定制的媒体选择器。它提供了照片和视频的选择功能,支持单选和多选,全屏视图,以及实时照片的预览和捕获。以下是该项目的主要特点和使用方法:

功能特点

  • 支持照片和视频选择。

  • 支持单选和多选。

  • 提供全屏视图。

  • 支持实时照片预览和捕获。

  • 完全可定制。

与 PhotosPicker 的对比

  • MediaPicker 提供完整的视图,可以集成到自己的屏幕中并进行自定义。

  • PhotosPicker 只允许从图库中选择照片,不支持相机。

  • MediaPicker 提供默认的图库选择器,并能管理相册,还提供相机视图来拍摄照片/视频。

使用方法

  1. 添加一个绑定布尔值来控制选择器的显示状态。

  2. 添加一个 Media 数组来保存选择结果。

  3. 初始化媒体选择器,并以你喜欢的方式展示它,例如使用 .sheet 修改器。

.sheet(isPresented: $showMediaPicker) {
    MediaPicker(
        isPresented: $showMediaPicker,
        onChange: { medias = $0 }
    )
}

Media 模型

库会返回一个 Media 结构体数组,供你使用。它包含以下字段和方法(所有方法都使用异步/等待 API):

  • type - 图片或视频。

  • duration - 图片为 nil。

  • getURL() - 返回媒体的 URL(如果需要,会自动存储在临时目录中)。

  • getThumbnailURL() - 返回媒体的缩略图 URL(对于图片,直接返回图片本身)。

  • getData() - 返回媒体的 Data 表示。

  • getThumbnailData() - 返回媒体的缩略图 Data 表示。

模式

该库允许你使用照片库和相机。

可用的修饰符

  • showLiveCameraCell - 在图库网格的左上角显示实时相机预览单元格。

  • mediaSelectionType - 限制显示的媒体类型:图片、视频或两者都有。

  • mediaSelectionStyle - 显示选中/未选中媒体状态的方式:计数器或简单的复选标记。

  • mediaSelectionLimit - 允许的最大选择数量,'nil' 表示无限制。

  • showFullscreenPreview - 如果为 true,则点击媒体打开全屏预览;如果为 false,则点击图片立即选择该图片并关闭选择器。

过滤修饰符

  • applyFilter((Media) async -> Media?) - 传递一个闭包,应用于每个媒体。返回类型为 Media?,返回 Media 表示要显示在照片网格中,返回 nil 表示要排除。

  • applyFilter(([Media]) async -> [Media]) - 应用于整个媒体数组的闭包,也可以用于重新排序。

屏幕旋转修饰符

如果你的应用限制屏幕旋转,可以跳过这一部分。

管理相册的修饰符

  • albums - 用户的相册列表,如果你想以不同于 showingDefaultHeader 的方式显示它们。

  • pickerMode - 如果你不打算使用默认头部,可以设置这个选项。

主题修饰符

  • mediaPickerTheme - 颜色设置。

示例

要尝试 MediaPicker 的示例:

  1. 克隆仓库 https://github.com/exyte/MediaPicker.git

  2. 在 Xcode 中打开 Examples/Examples.xcworkspace

  3. 运行它!

安装

  • 通过 Swift Package Manager、CocoaPods 和 Carthage 集成 ExyteMediaPicker

系统要求

  • iOS 16+ / Xcode 13+

其他开源 SwiftUI 库

Exyte 还提供了其他多个开源 SwiftUI 库,如 PopupView、Grid、ScalingHeaderScrollView 等。

或许喜欢

Grid:SwiftUI 风格的 CSS Grid 布局视图

Grid 是一个受 CSS Grid 启发的 SwiftUI 布局库,支持灵活的网格布局、多种轨道尺寸、单元格背景和覆盖层,以及丰富的自定义和动画功能。

最近更新 2024-12-11

ScalingHeaderScrollView:可伸缩粘性头部的滚动视图

ScalingHeaderScrollView 是一个用 SwiftUI 编写的滚动视图库,其头部视图在滚动时可伸缩变化,提供丰富的自定义选项和动画效果。

最近更新 2024-12-11

ActivityIndicatorView:SwiftUI 创建的预设加载指示器库

ActivityIndicatorView 是一个 SwiftUI 库,提供多种预设的加载动画指示器,支持自定义样式和动画,适用于 iOS、watchOS、tvOS 和 macOS 平台。

最近更新 2024-12-11

热榜

Made with in Shangrao,China By 老雷

Copyright © devler.cn 1987 - Present

赣ICP备19009883号-1