使用 QuickPicker
从用户的照片库中选择媒体,就像 UIImagePickerController
。
内容
要求
- iOS 10.0+
- Xcode 10.0+
- Swift 4.2+
- RxSwift 和 KVFetcher 库
特性
单选或多选项目
- 图片、视频或两者都选
- 限制项目数量
- 滑动和上下滚动
- 撤销最多 20 步
更好的导航和 UI
- 查看项目的属性(收藏、视频时长、慢动作...)
- 根据设备类型(平板/手机)设置缩略图大小
- 使用标签栏在 1-2 按击中跳转到特定收藏
预览屏幕
- 在继续之前预览选定的图片和视频
- 快速滚动通过项目列表(如果超过 30 个)
- 移除项目
工作流程
用法
选择单张图片
var config = QuickPicker.Config(selectionMode: .single, allowedMedia: .images)
let quickPicker = QuickPicker(configuration: config, preselected: nil){ quickPicker, result in
quickPicker.dismiss(animated: true)
switch result {
case .finished(let assets):
print("Picked \(assets.count) assets")
case .canceled:
print("Canceled")
}
}
present(quickPicker, animated: true, completion: nil)
注意: QuickPicker 结果是 PHAsset 对象数组,而不是完整大小图像或缩略图。
若要选择多个项目以及图像和视频,请将配置修改为此
var config = QuickPicker.Config(selectionMode: .multiple(max: 30), allowedMedia: [.images, .videos])
...
所有配置选项
- allowedMedia:
AllowedMedia
- 选项集 - 允许挑选的媒体(图像/视频/两者都)。 - picking:
SelectionMode
- 可以是单个或多个(带限制或不限)。 - customTabKinds:
[TabKind]
- 显示在分段控制中的选项(默认:最近添加、收藏、我的专辑、iCloud 专辑、智能相册) - needsConfirmation:
Bool
- 应显示一个弹出窗口,用户可以在其中查看挑选的图片 - showsLimit:
Bool
- 如有限制数量,显示剩余多少张照片或不要显示 - preselected:
[PHAsset]
- 应预先选择的资产 - presentFirstOfferMoreLater:
Bool
- 与 WhatsApp 的工作方式类似 - 首先挑选单个图像/视频,然后提供继续挑选多个的选项。 - maximumThumbnailSize:
[UIUserInterfaceIdiom: CGFloat]
- 收藏品视图中项目缩略图的尺寸。当低于此值时,它将被调整以填充屏幕宽度。默认:[.phone: 100, .pad: 130]
- tintColor:
UIColor?
- 选择器的 tintColor(nil = 常见的 iOS 蓝色)
定义自定义标签
底部的标签栏(分段控件)用于跳转到特定集合(如最近添加或收藏),或跳转到一组集合(如 iCloud 共享或智能相册)。选择器中出现的标签在 .config.customTabKinds
中定义
var config = QuickPicker.Config(selectionMode: .single, allowedMedia: .images)
config.tabKinds = [.recentlyAdded, .favorites, .groupRegular, .groupSmart]
可能的 TabKinds
- 分组(相册列表)
- groupRegular - 我的相册
- groupShared - iCloud 共享相册
- groupSmart - 智能相册(如下所示)
- 单个(项目列表)
- recentlyAdded
- userLibrary(相册)
- 收藏
- 视频
- 屏幕快照
- selfPortraits(自拍)
- 全景 ...
依赖关系
- RxSwift (5.0.1) - https://github.com/ReactiveX/RxSwift
- KVFetcher (0.9.1) - 自有 - https://github.com/manuelvrhovac/KVFetcher
如果您使用 CocoaPods 安装 QuickPicker,两者应该会自动添加到项目中。如果已经使用了某个版本的 RxSwift,或者不打算使用 CocoaPods,我还不知道会是什么样。
未来开发思路
- 在项目列表中预览和弹出图片和视频。
- 摄像机捕获 - 一个屏幕或按钮,用于跳转到摄像头界面
- 使配置响应式 - 可以动态更改缩略图大小或 tintColor 等
- 完成时提供全尺寸或缩小后的图片和视频对象,而不是仅仅提供一个 PHAsset 数组
- 实时视频缩略图(可选,适用于更强大的设备)
安装
CocoaPods
CocoaPods 是 Cocoa 项目的依赖管理器。要使用 CocoaPods 将 QuickPicker 集成到 Xcode 项目中,请在您的 Podfile
中指定它。
platform :ios, '10.0'
use_frameworks!
target '<Your Target Name>' do
pod 'QuickPicker', '~> 0.9.2'
end
然后在终端中运行 pod install
命令。
Carthage
Carthage 是一个去中心化的依赖管理器,它可以构建你的依赖并提供你二进制框架。要使用 Carthage 将 QuickPicker 集成到你的 Xcode 项目中,请在你的 Cartfile
中指定它。
github "manuelvrhovac/QuickPicker" ~> 0.9.2
运行 carthage update
构建框架,并将构建的 QuickPicker.framework
拖动到你的 Xcode 项目中。
手动
如果你不愿意使用上述所说的任何依赖管理器,你可以手动将 QuickPicker 集成到你的项目中。
许可
QuickPicker 在 MIT 许可下发布。有关详细信息,请参阅 LICENSE 文件。