在 iPhone OS 3.0 中,Apple 添加了使用“共享”按钮一次共享多张图片并选择多张图片(使用复选标记)的功能。
我很想拥有一个 UIImagePickerController 让用户一次选择多个图像,而不必一张一张地选择。有没有办法做到这一点,还是我必须等到他们添加这个功能?
在 iPhone OS 3.0 中,Apple 添加了使用“共享”按钮一次共享多张图片并选择多张图片(使用复选标记)的功能。
我很想拥有一个 UIImagePickerController 让用户一次选择多个图像,而不必一张一张地选择。有没有办法做到这一点,还是我必须等到他们添加这个功能?
如果您仅支持 iOS 14 及更高版本,则可以使用 Apple 的PHPickerViewController。它允许选择多个图像(而 UIImagePickerController 不允许)。
与上面列出的其他库相比,使用 PHPickerViewController 的另一个好处是用户无需授予访问您的照片库的权限。
1.安装 pod - pod "BSImagePicker", "~> 2.8"
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
快速尝试这个美妙的 API:ImagePicker。与所有其他图像 API 一样,它易于使用并且更新得非常好。
AssetLibrary + UICollectionView ^^
基本上,使用 StoryBoard,您导入一个UINavigationController
,将根控制器更改为一个UICollectionViewController
(将是您的专辑列表),最后添加另一个UICollectionViewController
(将是您的照片列表)。
然后使用 Assetlibrary 检索用户相册和用户相册内容。
我一有时间就会做一个这样的组件。
你可以像这样使用这个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]) {
}
这种方式怎么样:
先打开“photos.app”,选择多张照片,复制;
在您自己的应用程序中,尝试检索那些副本照片;
我知道有一些应用程序是这样做的,但不知道如何实现第 2 步。