
YVImagePickerController.gif
穿越吧
解決iOS11,UIImagePickerController沒有提示請求權限的問題
pod 'YVImagePickerController' ,'~> 1.0.7'
2.在plist文件中加入
<key>NSPhotoLibraryUsageDescription</key>
<string>App需要您的同意,才能訪問相冊</string>
import Photos
遵守協(xié)議 YVImagePickerControllerDelegate
初始化
let pickerVC = YVImagePickerController()
self.present(pickerVC, animated: true, completion: nil)
配置
| yvmaxSelected | 多選時最大張數(shù) |
|---|---|
| yvcolumns | 每行列數(shù) |
| topViewColor | 導航欄背景色 |
| yvmediaType | 媒體類型:照片或視頻 |
| yvIsMultiselect | 是否多選,默認單選 |
| selectedBtn_nimage | 多選時,未選中image |
| selectedBtn_simage | 多選時,選中image |
實現(xiàn)代理方法
func yvimagePickerController(_ picker: YVImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { }
func yvimagePickerControllerDidCancel(_ picker: YVImagePickerController) {}
4.示例
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
/*
照片
每行4列
單選
*/
let pickerVC = YVImagePickerController()
pickerVC.yvmediaType = .image
pickerVC.yvcolumns = 4
pickerVC.yvIsMultiselect = false
pickerVC.delegate = self
self.present(pickerVC, animated: true, completion: nil)
/*
照片
每行5列
多選
*/
let pickerVC = YVImagePickerController()
pickerVC.yvmediaType = .image
pickerVC.yvcolumns = 5
pickerVC.yvIsMultiselect = true
pickerVC.delegate = self
self.present(pickerVC, animated: true, completion: nil)
/*
視頻
每行5列
單選
*/
let pickerVC = YVImagePickerController()
pickerVC.yvmediaType = .video
pickerVC.yvcolumns = 5
pickerVC.yvIsMultiselect = false
pickerVC.delegate = self
self.present(pickerVC, animated: true, completion: nil)
}
func yvimagePickerController(_ picker: YVImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
//單選照片
if info["imagedata"] != nil{
let image = info["imagedata"] as! UIImage
}
//單選視頻
else if info["videodata"] != nil{
let url = info["videodata"] as! URL
}
//多選照片
else if info["imagedatas"] != nil{
let phassets = info["imagedatas"] as! Array<PHAsset>
}
}
func yvimagePickerControllerDidCancel(_ picker: YVImagePickerController) {
picker.dismiss(animated: true, completion: nil)
}