Применить разрешить редактирование только к видео в imagePickerController

Я использую UIImagePickerController, чтобы выбрать изображение или видео. То, что я сейчас пытаюсь достичь, это установить allowsEditing = true но применять только при выборе видео. В тот момент, когда установлено allowEditing = true это также применяется, когда вы выбираете изображение.

Единственная удача, которую я имел до сих пор, это установка allowsEditing = false и используя didFinishPickingMediaWithInfo метод определения, когда видео было выбрано. Оттуда применяется UIVideoEditorController для выбранного видео. Проблема с этим, однако, заключается в том, что видео обнаруживается, только когда вы выбираете "выбрать", когда оно открывается для просмотра видео редактирования (изображение 1 ниже). И, очевидно, когда я выбираю "Выбрать", он открывает другой вид редактирования видео, который является UIVideoEditorController (изображение 2). Если бы я мог определить, когда видео выбрано сразу, а не открываться в режиме редактирования видео, все будет работать идеально. Если я подам заявку allowsEditing = true, при выборе видео оно открывается до изображения 2 ниже, что идеально, однако при выборе видео оно открывается до просмотра обрезанного изображения, которое не является тем, что я хочу, поэтому я застрял:(

Ниже приведен код, который я использую. Если у кого-то есть какие-либо предложения или может помочь, это будет с благодарностью. заранее спасибо

image 1 изображение 1

изображение 2 изображение 2

@IBAction func galleryButton(_ sender: Any) {

        picker = UIImagePickerController()
        picker.delegate = self
        picker.allowsEditing = false
        picker.videoMaximumDuration = 59.0
        picker.mediaTypes = [kUTTypeImage as String, kUTTypeMovie as String]
        present(picker, animated: true, completion: nil)
}

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

   if let videoURL = info[UIImagePickerControllerMediaURL] as? URL {
    if UIVideoEditorController.canEditVideo(atPath: videoURL.path) {
                picker.dismiss(animated: true, completion: nil)

                let editController = UIVideoEditorController()
                editController.videoPath = videoURL.path
                editController.videoMaximumDuration = 59.0
                editController.delegate = self
                present(editController, animated:true)
        }
    }

    if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
            photoView.image = image
    }
}

0 ответов

Другие вопросы по тегам