【swift3.0】【自定义相册】【Photos.framework】
2016-12-08 00:00
197 查看
贡献作者 -【XJDomain】
博客XJ: https://my.oschina.net/shengbingli/blog GitHub直播地址: https://github.com/lishengbing/XJDomainLive
02-PHAssetCollection : 是一个资源集合对象,相当于一个相册的概念
01- 拿到所有系统的智能相册组:
02-取出所有用户自定义的相册组
03-PHFetchResult : 是一个结果集,一个范集类,上面获取到的智能相册组和自定义相册组 就是被封装成改类中返回给我们的,我们需要遍历上面 相册资源组 拿到我们每一个相册里面的所有单独资源
01-分别遍历上面的智能相册和用户自定义相册,得到每一个相册中的单独资源信息
04-PHAsset 是一个独立的资源对象,可以通过类方法对PHCollection对象进行遍历,获得存放Asset对象的结果集,可以直接获得资源的规格数据,若想获得图片以及原图等资源,需要配合PHImageManager对象,继承自PHObject.
博客XJ: https://my.oschina.net/shengbingli/blog GitHub直播地址: https://github.com/lishengbing/XJDomainLive
-IOS8.0+后,苹果开始推荐使用Photos.framework来自定义相册
-PhotosKit的框架类的解释
01-PHPhotoLibrary :是一个资源库,能够获取相册权限和对相册的操作02-PHAssetCollection : 是一个资源集合对象,相当于一个相册的概念
01- 拿到所有系统的智能相册组:
// 1.1 列出所有系统的智能相册 let smartAlbumsFetchResult = PHAssetCollection.fetchAssetCollections(with: .smartAlbum, subtype: .albumRegular, options: nil)
02-取出所有用户自定义的相册组
// 1.3取出所有用户创建的相册 let topLevelUserCollections = PHCollectionList.fetchTopLevelUserCollections(with: nil)
03-PHFetchResult : 是一个结果集,一个范集类,上面获取到的智能相册组和自定义相册组 就是被封装成改类中返回给我们的,我们需要遍历上面 相册资源组 拿到我们每一个相册里面的所有单独资源
01-分别遍历上面的智能相册和用户自定义相册,得到每一个相册中的单独资源信息
// 懒加载模型数组:相簿列表数据 fileprivate lazy var albums : [AlbumItem] = [AlbumItem]() // 获取相册列表 fileprivate func getAlbumLists(_ collection : PHFetchResult<PHAssetCollection>) { for index in 0..<collection.count { // 获取当前相簿内的照片 let resultOptions = PHFetchOptions() resultOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: true)] // 只获取图片资源(排除音视频资源) resultOptions.predicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.image.rawValue) let assetCollection = collection[index] let assetFetchResult = PHAsset.fetchAssets(in: assetCollection, options: resultOptions) // 没有图片的空相簿不显示 if assetFetchResult.count > 0 { let items = AlbumItem(title: assetCollection.localizedTitle!, fetchResult: assetFetchResult as! PHFetchResult<AnyObject>) let resource = getFirstImageAtPHFetchResult(assetFetchReult: assetFetchResult) items.firstImage = resource.firstImage items.info = resource.info albums.append(items) } } } // 遍历assetFetchReult结果集,可以得到每一个单独照片 let cacheImageManager = PHCachingImageManager() let asset = assetFetchReult.firstObject! cacheImageManager.stopCachingImagesForAllAssets() cacheImageManager.requestImage(for: asset, targetSize: targetSize, contentMode: .aspectFill, options: nil) { (image : UIImage?, info : [AnyHashable : Any]?) in }
04-PHAsset 是一个独立的资源对象,可以通过类方法对PHCollection对象进行遍历,获得存放Asset对象的结果集,可以直接获得资源的规格数据,若想获得图片以及原图等资源,需要配合PHImageManager对象,继承自PHObject.
相关文章推荐
- iOS 自定义相册和选取 AssetsLibrary 和 Photos(写的不错 一篇足以!感谢)
- swift3.0 自定义相册相机
- iOS8.0 使用Photos.framework对相册的常用操作
- iOS8.0 使用Photos.framework对相册的常用操作
- iOS:基于Photos框架的图片选择器以及创建自定义相册
- 使用Photos保存图片到自定义相册
- 使用Photos.framework对相册的常用操作
- [10秒学会] - iOS <Photos/Photos.h>自定义相册
- XCode6添加自定义framework运行真机出现dyld: Library not loaded的解决方法
- android 自定义view实现自动相册功能
- ios相机读取图片到相册writeImageToSavesPhotosAlbum出现的问题
- 自定义相册获取所有照片,不卡顿
- DDLog--CocoaLumberjack framework 自定义日志管理
- 源码推荐(8.27):自定义宽高比的相册框,view隐藏时也隐藏autolayout的NSLayoutAttribute
- 自定义相册多张图片选择并可限制数量
- framework中自定义系统级权限
- 使用Photos来获取相册中所有图片
- ——使用.NET Framework 2.0创建自定义设计器
- iOS--自定义相册---对象数组按照时间戳排序
- Android Framework学习——如何加入并编译自定义的模块