MediaPicker:SwiftUI 可定制媒体选择器库
项目名称:MediaPicker
MediaPicker 是一个开源的 SwiftUI 库,用于创建可定制的媒体选择器。它提供了照片和视频的选择功能,支持单选和多选,全屏视图,以及实时照片的预览和捕获。以下是该项目的主要特点和使用方法:
功能特点
支持照片和视频选择。
支持单选和多选。
提供全屏视图。
支持实时照片预览和捕获。
完全可定制。
与 PhotosPicker 的对比
MediaPicker 提供完整的视图,可以集成到自己的屏幕中并进行自定义。
PhotosPicker 只允许从图库中选择照片,不支持相机。
MediaPicker 提供默认的图库选择器,并能管理相册,还提供相机视图来拍摄照片/视频。
使用方法
添加一个绑定布尔值来控制选择器的显示状态。
添加一个 Media 数组来保存选择结果。
初始化媒体选择器,并以你喜欢的方式展示它,例如使用 .sheet 修改器。
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 的示例:
克隆仓库
https://github.com/exyte/MediaPicker.git
在 Xcode 中打开
Examples/Examples.xcworkspace
运行它!
安装
通过 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