ios - 照片库中的视频磁贴
问题描述
所以我一直在互联网上寻找一种方法来实现拥有视频磁贴的目标。我当前的实现实现了只显示视频的目标,但我必须先进入相机胶卷才能看到它们。我想要的只是有一个标题或专辑,上面只写视频,这样当你进去时,视频就在那里,并显示视频的数量而不是相机胶卷,它有所有东西的数量,然后当你进去的时候在那里你看到视频。我已将 imagepickerController 源类型更改为 photoLibrary,并且我已经更改了 mediaTypes 以正确考虑视频。因此,对于那些可能将其添加为答案的人来说,改变这一行并不是答案。
我已经添加了 imagepickercontroller 的代码
import Foundation
import Eureka
import MobileCoreServices
/// Selector Controller used to pick an video
open class ImagePickerController : UIImagePickerController, TypedRowControllerType, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
/// The row that pushed or presented this controller
public var row: RowOf<URL>!
//setting navigation controller delegate
/// A closure to be called when the controller disappears.
public var onDismissCallback : ((UIViewController) -> ())?
open override func viewDidLoad() {
super.viewDidLoad()
delegate = self
allowsEditing = (row as? _VideoRow)?.allowEditor ?? false
mediaTypes = [kUTTypeMovie as String, kUTTypeVideo as String]
}
public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
guard let videoURL = info[UIImagePickerControllerMediaURL] as? URL else {
return
}
(row as? _VideoRow)?.videoURL = videoURL
(row as? _VideoRow)?.value = videoURL
onDismissCallback?(self)
}
open func imagePickerControllerDidCancel(_ picker: UIImagePickerController){
onDismissCallback?(self)
}
public func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
viewController.navigationItem.title = "Videos"
}
}
有什么问题吗,或者任何人都可以指出我要去的方向,向我展示如何创建视频拼贴或相册或向我展示一个示例。我最终想要这样的东西
虽然只有一个视频专辑
解决方案
与任何其他媒体类型一样,视频不是专辑,因此您不能仅从UIImagePickerController
. 事实上,UIImagePickerController
可能不会为您的用例削减它,因为它的功能非常有限。
基本上,就像在 macOS 桌面上一样,没有一个文件夹只包含您的视频。你必须查询它。在 iOS 中,您可以通过调用(当然将媒体类型设置为)来完成此fetchAssetsWithMediaType:options:
操作。您可以使用谓词 ( ) 缩小结果范围或使用排序描述符 ( ) 对其进行排序,两者都设置为。您可以将整个内容包装在一个数据源中,该数据源还可以为您提供其他相册,例如相机胶卷或您需要的任何其他相册。这将是使用函数的自定义代码,仅返回您感兴趣的集合/资产。PHAsset
.video
NSPredicate
NSSortDescriptor
PHFetchOptions
PHAsset*
一旦你有了数据源,你就可以用它来构建你的 UI。您可以使用简单的UITableView
一些自定义单元格来完成您想要的 UI,但现在您还将负责获取每张专辑的专辑封面、标题、计数等。您还可以将该逻辑委托给您的数据源,以便您的 UI 仅从中读取。类中内置了很多异步行为,PHAsset*
因此您需要确保正确处理这些行为。然后,您需要考虑远程 iCloud 内容,默认情况下不包括在内,因此您需要includeAssetSourceTypes
在PHFetchOptions
.
所有这些都是相当大的工作量。特别是如果您希望有一种方便的方法或布尔值UIImagePickerController
可以为您提供所需的东西。我不知道一个所以很长的路是我能想到的唯一方法。然而,那里有大量的图像选择器,其中很多都带有开放许可证。我建议你谷歌一些,看看是否能满足你的需求。如果没有,你可以随时DIY。
推荐阅读
- c++ - 如何使用一个 std::thread 对象来运行 2 个顺序事件(函数)?
- regex - 正则表达式匹配表达式以获取两个分隔符之间的单词(有或没有值)
- c# - 调用 UserDeletingRow 事件并回答“否”后,行从网格视图中消失,如果我想删除它
- php - 在 JSON 响应 PHP 中列出值
- youtube-api - 如何向 YouTube API CommentThreads:list 查询的 searchTerms 参数添加多个值?
- ios - 当我无法使用本地存储时,我必须如何处理 apollo-client 的解析器?
- r - 从特定字符串中提取不同的指定单词
- javascript - 可能有一排 Div,每个具有不同的左起始位置和宽度,填充到相邻的兄弟姐妹?
- sql-server - 如何在给定时间范围内每 15 分钟查找用户
- angular - Angular i18n 依赖问题