【问题标题】:Swift - How can I get a list of all photos and videos on iPhone?Swift - 如何获取 iPhone 上所有照片和视频的列表?
【发布时间】:2015-06-25 17:27:59
【问题描述】:

我希望能够查看存储在用户 iPhone 上的照片和视频的列表,以便允许他们选择要上传的文件。到目前为止,我已经在列表中显示照片但没有显示视频的地方工作。我用来显示照片库的代码如下:

@IBAction func btnAddPicOrVideo(sender: AnyObject) {

    let pickerC = UIImagePickerController()        
    pickerC.delegate = self        
    self.presentViewController(pickerC, animated: true, completion: nil)

}

正如我所提到的,我可以显示照片列表并选择其中一张。问题是我无法查看或选择任何视频。有没有办法指定要显示的图片和视频?或者,我必须单独显示图片和视频吗?

我目前正在模拟器上运行我的代码,并且我在本地存储了一个视频文件。

提前致谢。

【问题讨论】:

    标签: ios swift video uiimagepickercontroller photo


    【解决方案1】:
    class ScoutDetailPage: UIViewController,UIImagePickerControllerDelegate {
    
    var picker:UIImagePickerController? = UIImagePickerController()
    let imageView = UIImageView ()
    {
    
    override func viewDidLoad(){
    
            // Do any additional setup after loading the view.
    
    self.loadOrTakePhotos()
    
    }
    
    func loadOrTakePhotos()
    
    {
    
    if(UIImagePickerController .isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera))
        {
    picker!.sourceType = UIImagePickerControllerSourceType.Camera
            picker?.delegate = self
    
    self .presentViewController(picker!, animated: true, completion: nil)
                }
    
            }
            else if (pickersegment.selectedSegmentIndex == 1)
            {
                picker!.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
                picker?.delegate = self
    
              self.presentViewController(picker!, animated: true, completion: nil)
    
            }
    }
    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) {
     let pickedimage = info[UIImagePickerControllerOriginalImage] as! UIImage
    
    imageView.image = pickedimage
                if (imageView.image != nil)
                {
                    print("image not empty")
    
    // Do something here.
    
    picker .dismissViewControllerAnimated(false, completion: nil)
    
                }
                else
                {
                    print("IMAGE VIEW NIL")
                }
            }
    
        func image(image: UIImage, didFinishSavingWithError error: NSErrorPointer, contextInfo:UnsafePointer<Void>) {
    
            if error != nil {
                let alert = UIAlertController(title: "Save Failed",
                    message: "Failed to save image",
                    preferredStyle: UIAlertControllerStyle.Alert)
    
                let cancelAction = UIAlertAction(title: "OK",
                    style: .Cancel, handler: nil)
    
                alert.addAction(cancelAction)
                self.presentViewController(alert, animated: true,
                    completion: nil)
            }
        }
    
    
    
    }
    

    【讨论】:

      【解决方案2】:

      我可以通过指定来解决这个问题

      import MobileCoreServices
      

      我更改了上面指定的代码:

      @IBAction func btnAddPicOrVideo(sender: AnyObject) {
      
          let pickerC = UIImagePickerController()        
          pickerC.mediaTypes = [kUTTypeImage as NSString, kUTTypeMovie as NSString]
          pickerC.delegate = self        
          self.presentViewController(pickerC, animated: true, completion: nil)
      
      }
      

      【讨论】:

      • (1) 说as Stringas NSString 好。 (2) 不能解决问题;现在您将看到视频而不是静止图像,因为您已将 mediaTypes 替换为另一个 single 类型。
      • 你完全正确。我急于完成这项工作。所以,虽然在图书馆打开时它显示了相册的正面,但在查看里面我发现它只显示了视频。如果可能的话,我必须弄清楚如何同时指定这两种类型。
      • 我现在可以正常工作了。我将在上面编辑我的答案以反映现在正在发生的变化。感谢您的回复。
      • 好了,就是这样。
      猜你喜欢
      • 1970-01-01
      • 2016-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-29
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      相关资源
      最近更新 更多