19

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

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

4

6 回答 6

4

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

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

于 2020-11-05T23:47:35.690 回答
2

1.安装 pod - pod "BSImagePicker", "~> 2.8"

  1. inside info plist add row Privacy - Photo Library 使用说明

3.将以下代码粘贴到 .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',支持的版本是:Xcode 10.2 中的 4.0、4.2、5.0”错误?”这个错误然后从这个链接解决它:- https://stackoverflow .com/a/55901964/8537648

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

示例图片:-在此处输入图像描述

于 2019-04-29T11:42:13.777 回答
2

快速尝试这个美妙的 API:ImagePicker。与所有其他图像 API 一样,它易于使用并且更新得非常好。

于 2016-05-30T15:29:03.440 回答
1

AssetLibrary + UICollectionView ^^

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

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

我一有时间就会做一个这样的组件。

于 2013-04-17T12:56:59.773 回答
1

你可以像这样使用这个OpalImagePicker (Swift 4)

 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]) {
}
于 2019-04-29T12:52:57.707 回答
-17

这种方式怎么样:

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

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

我知道有一些应用程序是这样做的,但不知道如何实现第 2 步。

于 2010-06-23T08:58:50.947 回答