0

我正在尝试在 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)
}
4

4 回答 4

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)
    }
}
于 2015-03-26T10:47:16.273 回答
0

添加: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)    
}
于 2015-03-26T12:51:06.937 回答
0

斯威夫特3/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)
        }
    }
于 2018-07-16T11:16:39.110 回答
0

扩展 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
}
于 2015-12-11T22:12:10.433 回答