选择多个图像(UIImagePickerController或Photos.app共享UI)

时间:2009-08-18 00:52:34

标签: ios iphone uiimagepickercontroller

在iPhone OS 3.0中,Apple添加了使用“共享”按钮一次共享多张图片并选择多张图片(使用复选标记)的功能。

我很想拥有一个UIImagePickerController,它允许用户一次选择多个图像,而不必一个一个地去。有没有办法做到这一点,还是我必须等到他们添加这个功能?

6 个答案:

答案 0 :(得分:2)

在swift中尝试这个精彩的API:ImagePicker。与所有其他图像API一样,它使用简单,而且更新得很好。

答案 1 :(得分:1)

AssetLibrary + UICollectionView ^^

基本上,使用StoryBoard,您导入UINavigationController,您将根控制器更改为UICollectionViewController(将是您的相册列表),最后添加另一个UICollectionViewController(将是您的照片)列表)。

然后使用Assetlibrary检索用户相册和用户相册内容。

我会在有一段时间后立即制作这样的组件。

答案 2 :(得分:0)

1.install pod- pod“ BSImagePicker”,“〜> 2.8”

  1. 内部信息列表中添加行隐私-图片库使用说明

3.paste下面的代码在.swift文件中-

    import UIKit
    import BSImagePicker
    import Photos

    class MultipleImgViC: UIViewController {

        @IBOutlet weak var imageView: UIImageView!
        var SelectedAssets = [PHAsset]()
        var photoArray = [UIImage]()


        override func viewDidLoad() {
            super.viewDidLoad()


        }




        @IBAction func selectImages(_ sender: Any) {

            let vc = BSImagePickerViewController()

            self.bs_presentImagePickerController(vc, animated: true, select: { (assest: PHAsset) -> Void in
            },
                                                 deselect: { (assest: PHAsset) -> Void in

        }, cancel: { (assest: [PHAsset]) -> Void in

        }, finish: { (assest: [PHAsset]) -> Void in

            for i in 0..<assest.count
            {
                    self.SelectedAssets.append(assest[i])
            }

            self.convertAssetToImages()

        }, completion: nil)


    }


    @IBAction func dismissview(_ sender: Any) {
        dismiss(animated: true, completion: nil)
    }


}
extension MultipleImgViC{

    func convertAssetToImages() -> Void {

        if SelectedAssets.count != 0{

            for i in 0..<SelectedAssets.count{

                let manager = PHImageManager.default()
                let option = PHImageRequestOptions()

                var thumbnail = UIImage()

                option.isSynchronous = true

                manager.requestImage(for: SelectedAssets[i], targetSize: CGSize(width: 200, height: 200), contentMode: .aspectFill, options: option, resultHandler: {(result,info) -> Void in
                    thumbnail = result!
                })

                let data = thumbnail.jpegData(compressionQuality: 0.7)
                let newImage = UIImage(data: data!)
                self.photoArray.append(newImage! as UIImage)

            }

            self.imageView.animationImages = self.photoArray
            self.imageView.animationDuration = 3.0
            self.imageView.startAnimating()
        }

    }


}

注意:-如果pod文件中给出“不支持如何修复“ SWIFT_VERSION'3.0',则支持的版本为:4.0、4.2、5.0”,那么Xcode 10.2中会出现错误? ”,然后通过以下链接解决该错误:-https://stackoverflow.com/a/55901964/8537648

视频参考:-https://youtu.be/B1DelPi1L0U

示例图片:-enter image description here

答案 3 :(得分:0)

您可以像这样(快捷键4)一样使用此OpalImagePicker

 var imagePicker: OpalImagePickerController! 
 imagePicker = OpalImagePickerController()
 imagePicker.imagePickerDelegate = self
 imagePicker.selectionImage = UIImage(named: "aCheckImg")
 imagePicker.maximumSelectionsAllowed = 3 // Number of selected images
 present(imagePicker, animated: true, completion: nil)

然后实现其委托:

func imagePickerDidCancel(_ picker: OpalImagePickerController) {
        //Cancel action
}

func imagePicker(_ picker: OpalImagePickerController, didFinishPickingImages images: [UIImage]) {
}

答案 4 :(得分:0)

如果仅支持iOS 14及更高版本,则可以使用Apple的PHPickerViewController。它允许选择多个图像(而UIImagePickerController则不允许)。

与上面列出的其他库相比,使用PHPickerViewController的另一个好处是用户无需授予访问照片库的权限。

答案 5 :(得分:-12)

这样怎么样:

  1. 首先打开“photos.app”,选择多张照片并复制;

  2. 在您自己的应用中,尝试检索这些副本照片;

  3. 我知道有些应用确实喜欢这样,但不知道如何实现第2步。