如何将带有 imagepickercontroller 的照片作为缩略图放入 collectionView 单元格
Posted
技术标签:
【中文标题】如何将带有 imagepickercontroller 的照片作为缩略图放入 collectionView 单元格【英文标题】:how to get a photo with imagepickercontroller into the collectionView cell as thumbnail 【发布时间】:2020-06-27 12:24:58 【问题描述】:我尝试创建一个代码来从相册中挑选照片并将其作为缩略图显示在屏幕上的集合视图单元格中。每次单击按钮,我都会选择一张照片,新照片将出现在以前的缩略图旁边。 CollectionView 将有单行垂直滚动。 我很难将图像从pickercontroller didFinishPickingMediaWithInf 方法转移到collectionView cellForItemAt 方法中。我通过使用虚拟 UIImageV 找到了解决方案,但它只显示第一张照片而不显示其他照片。我没有任何崩溃。您能否帮助我更正代码以将我从相册中选择的照片上传到收藏视图单元格中。请看下面的代码:
class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UIImagePickerControllerDelegate,UINavigationControllerDelegate
public let imagePicker = UIImagePickerController()
@IBOutlet weak var dummyImageView: UIImageView!
private let reuseIdentifier = "myViewCell"
var myImage = [UIImage]()
@IBOutlet var collectionView: UICollectionView!
override func viewDidLoad()
super.viewDidLoad()
dummyImageView.isHidden = true
collectionView.dataSource = self
collectionView.delegate = self
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
return myImage.count
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier , for: indexPath) as! MyViewCell
cell.backgroundColor = UIColor.blue
let imageView = cell.myImage
myImage.append(dummyImageView.image!)
imageView!.image = myImage[indexPath.row]
return cell
@IBAction func imageButtonPressed(_ sender: Any)
imagePicker.delegate = self
imagePicker.sourceType = .photoLibrary
imagePicker.allowsEditing = false
self.present(imagePicker, animated: true, completion: nil)
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any])
if let image = info[.originalImage] as? UIImage
print("last value",myImage.count)
dummyImageView.image = image
myImage.append(dummyImageView.image!)
collectionView.reloadData()
else
print("error to load")
dismiss(animated: true, completion: nil)
【问题讨论】:
【参考方案1】:这个问题并不明显,所以我不得不在我的机器上重新创建它。实际上 myImage 数组在下面的函数中被加载了两次。
-
didFinishPickingMediaWithInfo
cellForItemAt
这会导致集合视图中的数据被添加到 myImage 数组中。 删除 cellForItemAt 中的以下分配,解决了该问题。 // myImage.append(dummyImageView.image!)
【讨论】:
谢谢。我已经通过删除虚拟图像视图对其进行了更新,并且运行良好。以上是关于如何将带有 imagepickercontroller 的照片作为缩略图放入 collectionView 单元格的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 ImagePickerController 直接显示“相机胶卷”
从 imagePickerController AFNetWorking 3.0 上传图像到服务器