Как отфильтровать расширение в фотоБиблиотеке UIimgaePickerController swift - PullRequest
0 голосов
/ 29 октября 2018

Я только хочу, чтобы в библиотеке было одно видео типа. Используйте библиотеку по умолчанию. Мое приложение в настоящее время берет изображения и видео из каталога документов приложения, используя UIImagePickerController (.photoLibrary). Я хочу показать только один тип видео .mp4

import AVFoundation
import MobileCoreServices
import Photos
import UIKit

 class CameraLibraryTestViewController: UIViewController {
        @IBOutlet weak var imgView: UIImageView!

        let picker = UIImagePickerController()


        override func viewDidLoad() {
            super.viewDidLoad()


        }

        @IBAction func bAction(_ sender: Any) {
            picker.mediaTypes = ["public.image", "public.mp4"] // filter extesion mp4 didn't work, 
            picker.sourceType = .photoLibrary
            picker.allowsEditing = false
            picker.delegate = self

            present(picker, animated: true)
        }
    }



    extension CameraLibraryTestViewController: UINavigationControllerDelegate, UIImagePickerControllerDelegate {
        public func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
            dismiss(animated: true, completion: nil)
        }

        func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
            viewController.navigationItem.title = "Jeri Library"
            picker.setEditing(false, animated: true)
            print("test or check: \(viewController.debugDescription)")
        }

        func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String: Any]) {
            let assetPath = info[UIImagePickerControllerReferenceURL] as! NSURL

            if (assetPath.absoluteString?.hasSuffix("MOV"))! {
                print("MOV")
                dismiss(animated: true) {
                    self.navigationController?.pushViewController(EmojiReadViewController(), animated: true)
                }
            }
            else if (assetPath.absoluteString?.hasSuffix("MP4"))! {
                print("MP4")
                dismiss(animated: true) {
                    self.navigationController?.pushViewController(EmojiReadViewController(), animated: true)
                }
            }
            else if (assetPath.absoluteString?.hasSuffix("M4V"))! {
                print("M4V")
                dismiss(animated: true) {
                    self.navigationController?.pushViewController(EmojiReadViewController(), animated: true)
                }
            }
            else {
                print("Unknown")
                dismiss(animated: true, completion: nil)
            }
        }
    }

Я пытался использовать mediaType [kUTTypeMPEG4 as String], но он по-прежнему не работает, то есть в didFinishPickingMediaWithInfo, это только для фильтров после выбора из библиотеки.

Если я использую kUTTypeMovie, он получает все видео в локальном хранилище

1 Ответ

0 голосов
/ 29 октября 2018

Это будет отображать только видео

picker.mediaTypes = [ "public.movie"]
...