一款不错的图片选择器,支持从相册选择单张或多张图片,利用delegate和block作为选择完成后的回调。2. 支持iOS8及以上系统,基于 Photos.framework 封装,完美实现从相册选择图片查看相册图片列表。
CocoaPods集成方式 pod 'CYPhotosKit', '~> 2.6.0'
iOS8以后苹果推出了Photos.Framework来管理用户相册等多媒体资源,笔者抱着学习的态度仿写了一个多图片选择器,利用Photos.Framework来获取相册里的相片视频。
CYPhotosLibrary 获取相册里的分组,查看单个分组里所有相片,单选和多选照片,可以设置最大选择照片的数量。GitHub地址:[https://github.com/ZhaoBingDong/CYPhotosKit](https://github.com/ZhaoBingDong/CYPhotosKit)
如果要打开设置隐私界面修改 plist 文件,在里面添加 URL types 并设置一项URL Schemes为prefs
详细过程可以查看简书
http://www.jianshu.com/p/dc2c07449d90 示例代码
let cyPhotoNav = CYPhotoNavigationController.showPhotosViewController() self.presentViewController(cyPhotoNav, animated: true, completion: nil) cyPhotoNav.maxPickerImageCount = self.getNeedsImageCount() // 设置最大选择相片的数量,比如最多选择9张照片 cyPhotoNav.cyPhotosDelegate = self cyPhotoNav.completionBlock = { (photos) in
}
CYPhotoNavigationControllerDelegate 图片选择器协议
// MARK: - CYPhotoNavigationControllerDelegate extension BKComposeViewController : CYPhotoNavigationControllerDelegate {
func cyPhotoNavigationController(controller: CYPhotoNavigationController?, didFinishedSelectPhotos result: [CYPhotosAsset]?) {
let array = NSMutableArray()
for i in 0..<result!.count {
let photoAsset = result![i]
let photo = CYPhoto()
photo.type = .Photo
photo.image = nil
photo.photosAsset = photoAsset
array.addObject(photo)
}
let indexSet = NSIndexSet.init(indexesInRange: NSMakeRange(0, array.count))
self.dataSource.insertObjects(array as [AnyObject], atIndexes: indexSet)
if self.dataSource.count >= 10 {
self.dataSource.removeLastObject()
}
self.collectionView.reloadData()
}
} API 文档
CYPhotoNavigationController 图片选择器对象 通过它完成相册所有照片的显示和选择完图片后的回调
@class CYPhotosAsset; /**
@protocol CYPhotoNavigationControllerDelegate; /**
/**
/**
/** completionBlock */ @property (nonatomic,copy,nullable) PhotosCompletion completionBlock;
/** cyPhotosDelegate / @property (nonatomic,weak,nullable) id cyPhotosDelegate; /*
@end
@protocol CYPhotoNavigationControllerDelegate
@optional
/**
@end
/**
代表一个视频或者照片资源 */ @interface CYPhotosAsset : NSObject
/** 代表一个图片或者视频 */ @property (nonatomic,strong,nullable) PHAsset *asset;
/** 缩略图 */ @property (nonatomic,strong,nullable) UIImage *thumbnail;
/** 原图 */ @property (nonatomic,strong,nullable) UIImage *originalImg;
/** 视频/图片的本地 url */ @property (nonatomic,copy,nullable ) NSURL *imageUrl;
/** 选取后的图片/视频的二进制文件 */ @property (nonatomic,strong,nullable) NSData *imageData;
/**
/**
获取相册集合对象,获取所有相册集合,用户自己创建相册集合,系统相册集合
/**
/**
/**
/**
/**