1.判断数据源是否可用
if !UIImagePickerController.isSourceTypeAvailable(.photoLibrary) {
return
}
2.创建照片选择控制器
let ipc = UIImagePickerController()
3.设置照片源
ipc.sourceType = .photoLibrary
4.设置代理
ipc.delegate = self
5.弹出选择照片控制器
present(ipc, animated: true, completion: nil)
注意:只有控制器可以modal
6.实现代理方法(将选择的照片传递给cell,让他自己显示数据)(这里我们使用CollectionViewCell)
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
// 1.获取选中的照片
let image = info[UIImagePickerController.InfoKey.originalImage] as! UIImage
// 2.将选中的照片添加到数组中
images.append(image)
// 3.将数组赋值给collectionView,让collectionView自己展示数据
picPickerView.images = images
// 4.退出选择照片控制器
picker.dismiss(animated: true, completion: nil)
}
images是我们在当前控制器创建的一个数组picPickerView是我们的collectionView,他当中也有一个我们自己创建的数组
7.在CollectionView当中设置数据(实现数据源方法)
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return images.count + 1
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
// 1.创建cell
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: picPickerCell, for: indexPath) as! picPickerViewCell
// 2.给cell设置数据
cell.image = indexPath.item <= images.count - 1 ? images[indexPath.item] : nil
return cell
}
转载请注明原文地址:https://blackberry.8miu.com/read-33278.html