【问题标题】:How to open movie gallery in swift如何快速打开电影库
【发布时间】:2015-03-26 10:35:36
【问题描述】:

我正在尝试在 ipad 上打开电影的画廊,但我遇到了这个错误,我不知道为什么。

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Source type must be UIImagePickerControllerSourceTypeCamera'

这是我的代码:

func GaleriaVideo() {
   if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.SavedPhotosAlbum) {
        println("Galeria Video")

        imagePicker.delegate = self
        imagePicker.sourceType = UIImagePickerControllerSourceType.SavedPhotosAlbum
        imagePicker.mediaTypes = [kUTTypeMovie]
        imagePicker.allowsEditing = false

        imagePicker.showsCameraControls = false

        imagePicker.modalPresentationStyle = .Custom
        self.presentViewController(self.imagePicker, animated: true, completion: nil)
    }
}

类似的代码适用于照片库,但我不知道为什么这不起作用。

你能告诉我我的代码有什么问题吗,或者我必须搜索什么才能做到这一点?几天前我正在尝试这个,我感到迷茫。

谢谢你,

编辑:

这是我的照片库,它可以工作:

    func GaleriaImagen() {

    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.SavedPhotosAlbum){
        println("Galeria Imagen")

        imagePicker.delegate = self
        imagePicker.sourceType = UIImagePickerControllerSourceType.SavedPhotosAlbum
        imagePicker.allowsEditing = false

        imagePicker.modalPresentationStyle = .Custom
            self.presentViewController(self.imagePicker, animated: true, completion: nil)

    }
}
func imagePickerControllerDidCancel(picker: UIImagePickerController!) {

    self.dismissViewControllerAnimated(false, completion: nil)
}

func imagePickerController(picker: UIImagePickerController!, didFinishPickingImage image: UIImage!, editingInfo: NSDictionary!) {
    self.dismissViewControllerAnimated(true, completion: nil)
}

【问题讨论】:

  • 我在另一篇文章中发现了这个:imagePicker.mediaTypes = [String(kUTTypeMovie)],也许有帮助

标签: ios swift media-player uiimagepickercontroller video-gallery


【解决方案1】:

试试这个

func GaleriaVideo() {
   if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.SavedPhotosAlbum) {
        println("Galeria Video")

        imagePicker.delegate = self
        imagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
        imagePicker.mediaTypes = [kUTTypeMovie]
        imagePicker.allowsEditing = false

        imagePicker.showsCameraControls = false

        imagePicker.modalPresentationStyle = .Custom
        self.presentViewController(self.imagePicker, animated: true, completion: nil)
    }
}

【讨论】:

  • 只是一个小补充。当与 Swift kUTTypeMovie 一起使用时,导入这个库:import MobileCoreServices
【解决方案2】:

地址:UINavigationControllerDelegate, UIImagePickerControllerDelegate

func gallery() {
  if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.PhotoLibrary) {
    var img = UIImagePickerController()
    img.delegate = self
    img.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
    //img.mediaTypes = [kUTTypeImage]; //whatever u want type
    img.allowsEditing = false
    self.presentViewController(img, animated: true, completion: nil)
  }
}

func imagePickerController(picker: UIImagePickerController!, didFinishPickingImage image: UIImage!, editingInfo: NSDictionary!) {
  self.dismissViewControllerAnimated(true, completion: nil)    
}

【讨论】:

  • 已经添加了 UINavigationControllerDelegate、UIImagePickerControllerDelegate。我在类的全局范围内有“var img = UIImagePickerController()”
【解决方案3】:

扩展 Aju 答案,这将适用于 swift 2

func GaleriaVideo() {
  if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.SavedPhotosAlbum){
    print("Galeria Video")
    imagePicker.delegate = self
    imagePicker.sourceType = UIImagePickerControllerSourceType.SavedPhotosAlbum
    imagePicker.mediaTypes = [kUTTypeMovie as String]
    imagePicker.allowsEditing = false
    self.presentViewController(imagePicker, animated: true, completion: nil)
  }
}

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
  self.dismissViewControllerAnimated(true, completion: nil)
  //Here you can manipulate the adquired video
}

【讨论】:

  • 只是一个小补充。当与 Swift kUTTypeMovie 一起使用时,导入这个库:import MobileCoreServices
【解决方案4】:

Swift3/4:

func GaleriaImagen() {        
        if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.savedPhotosAlbum){
            print("Galeria Imagen")
            imagePicker.delegate = self
            imagePicker.sourceType = UIImagePickerControllerSourceType.savedPhotosAlbum
            imagePicker.allowsEditing = false
            imagePicker.modalPresentationStyle = .custom
            self.present(self.imagePicker, animated: true, completion: nil)
        }
    }

【讨论】:

    猜你喜欢
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 2020-07-20
    • 2019-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    相关资源
    最近更新 更多