照片库中的视频图块

时间:2018-10-22 17:13:43

标签: ios swift

因此,我一直在互联网上寻找一种方法来实现拥有视频拼贴的目标。我目前的实现方式仅实现了显示视频的目标,但是我必须先进入摄影机才能看到它们。我只想有一个标题或专辑,上面写着视频,这样当您进入那里时,还可以看到那里的视频,并且要显示没有相机胶卷的视频数量,而要显示的是所有事物的数量,然后再进入在那里您可以看到视频。我将imagepickerController的源类型更改为photoLibrary,并且已经更改了mediaType以正确地处理视频。因此,对于可能会将其添加为答案的人们来说,更改该行并不是答案。

enter image description here

我已经添加了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"
    }

}

有什么问题吗,或者有人可以指出我要向我展示如何创建视频图块或相册或向我展示示例的方向。我最终想要这样的东西

enter image description here

虽然只有一个视频相册

1 个答案:

答案 0 :(得分:0)

与其他任何媒体类型一样,视频也不是相册,因此您不能仅从UIImagePickerController中请求视频。实际上,UIImagePickerController可能不会针对您的用例削减它,因为它的功能非常严格。

基本上,就像在macOS桌面上一样,没有一个文件夹仅包含您的视频。您必须查询它。在iOS中,您可以通过在fetchAssetsWithMediaType:options:上调用PHAsset(当然将媒体类型设置为.video)来实现。您可以使用谓词(NSPredicate)缩小结果范围,也可以使用都在NSSortDescriptor上设置的排序描述符(PHFetchOptions)对结果进行排序。您可以将整个内容包装在一个数据源中,该数据源还将为您提供其他相册,例如Camera Roll或您需要的其他任何相册。这将是使用PHAsset*函数的自定义代码,该函数仅返回您感兴趣的集合/资产。

一旦有了数据源,就可以使用它来构建UI。您可以使用一个简单的UITableView和一些自定义单元格来完成所需的UI,但是现在您还将负责获取每个专辑的专辑封面,标题,计数等。您还可以将该逻辑委托给数据源,以便UI可以从中读取数据。 PHAsset*类中内置了许多异步行为,因此您需要确保正确处理。然后,您需要考虑远程iCloud内容,默认情况下不包含该内容,因此您需要将includeAssetSourceTypes上的PHFetchOptions设置为适当的值。

所有这些工作量很大。特别是如果您期望UIImagePickerController上有一种便捷方法或布尔值可以满足您的需求。我不知道一个,所以长途跋涉是我能想到的唯一方法。但是,这里有大量的图像选择器,其中许多带有开放许可证。我建议您使用Google,看看是否能满足您的需求。如果没有,您总是可以自己动手做。

相关问题