Смотрите только видео в UIIMagePictureController - PullRequest
0 голосов
/ 17 октября 2018

Итак, я создал свой собственный UIImagePicker, который отображается, когда пользователь нажимает кнопку.Я сделал это так, что этот сборщик изображений показывает только видео.Однако, когда я впервые представляю, он все еще показывает, снимок камеры, а затем фотографии, а затем, когда я нажимаю на библиотеку фотографий, там есть только видео, как я и ожидал.

Но как бы я видел только видео.

enter image description here

Как и на этом экране, я хочу, чтобы альбомы были помечены как видео.

Это код контроллера выбора изображений

/// Selector Controller used to pick a video
open class ImagePickerController : UIImagePickerController, TypedRowControllerType, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

    /// The row that pushed or presented this controller
    public var row: RowOf<URL>!

    /// A closure to be called when the controller disappears.
    public var onDismissCallback : ((UIViewController) -> ())?

    open override func viewDidLoad() {
        super.viewDidLoad()
        delegate = self
        mediaTypes = [kUTTypeMovie 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
        onDismissCallback?(self)
    }

    open func imagePickerControllerDidCancel(_ picker: UIImagePickerController){
        onDismissCallback?(self)
    }
}

Это то, что я выложил для типов источников

public struct VideoRowSourceTypes : OptionSet {

    public let rawValue: Int
    public var imagePickerControllerSourceTypeRawValue: Int { return self.rawValue >> 1 }

    public init(rawValue: Int) { self.rawValue = rawValue }
    init(_ sourceType: UIImagePickerController.SourceType) { self.init(rawValue: 1 << sourceType.rawValue) }

    public static let PhotoLibrary = VideoRowSourceTypes(.photoLibrary)
    public static let All: VideoRowSourceTypes = [PhotoLibrary]

}

Так что мой вопрос: когда я перехожу к imagePicker, как мне заставить его показывать только видео, а не нажимать в ролике камеры итогда выбираете видео?и Как мне изменить заголовок навигационной панели, чтобы выбрать видео, потому что эта строка кода не работает

private func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
    viewController.navigationItem.title = "Choose Video"
}
...