iOS Photos 框架学习

2017-11-08  本文已影响146人  郭小弟

最近项目中要做图片浏览的功能,特别学习一下iOS8以后的新框架Photos,有一些是自己实践出来的,还有一部分是踩在巨人的肩膀上得到的,由于资料比较多,此处就不一一列举了,希望巨人见谅

主要借鉴 : iOS8 Photos Framework

PHAsset:代表图像或视频对象;

PHCollection:代表图像或视频对象的集合,PHCollection是个基类,有PHAssetCollection和PHCollectionList两个子类,分别代表 Photos 里的相册和文件夹

4DA5D384-CEA5-492A-BA3D-A116B737857B.png
pixelWidth 和 pixelHeight : 资源大小
creationDate : 创建日期
location : 资源创建的地理位置
duration : 资源时长
hidden : 资源是否是隐藏资源
favorite : 资源是否被标记为喜欢
representsBurst 和 burstIdentifier : representsBurst 属性为 true,表示为连拍的资源 。 burstIdentifier,可以通过将这个值传入 fetchAssetsWithBurstIdentifier(...) 方法来获取这一连拍资源的更多的连拍图片。
比较常用几个获取资源的方法
+ (PHFetchResult<PHAsset *> *)fetchAssetsInAssetCollection:(PHAssetCollection *)assetCollection options:(nullable PHFetchOptions *)options;
获取照片中某个相册文件中的所有资源
+ (PHFetchResult<PHAsset *> *)fetchAssetsWithMediaType:(PHAssetMediaType)mediaType options:(nullable PHFetchOptions *)options;
查找相册中指定类型的资源
+ (PHFetchResult<PHAsset *> *)fetchAssetsWithLocalIdentifiers:(NSArray<NSString *> *)identifiers options:(nullable PHFetchOptions *)options;
根据资源的id查找到相对应的资源

PHAssetCollection代表Photos里的相册

typedef NS_ENUM(NSInteger, PHAssetCollectionType) {
     PHAssetCollectionTypeAlbum      = 1, //用户自定义相册
     PHAssetCollectionTypeSmartAlbum = 2, //系统相册
     PHAssetCollectionTypeMoment     = 3, //按时间排序分组的相册
     } PHOTOS_ENUM_AVAILABLE_IOS_TVOS(8_0, 10_0);
     
     
     PHAssetCollectionSubtype 这个里面的枚举就比较多了,按照条件查询的更细化一点,如果没有具体要求PHAssetCollectionSubtypeAny 所有的类型,

localizedLocationNames : 资源位置名称,这个属性只有在选择PHAssetCollectionTypeMoment的时候才会有值
estimatedAssetCount : 估算的资源数量,不一定准确
approximateLocation : 不是每个相册集合都有,测试了一下如果是PHAssetCollectionTypeMoment可以看到相册拍摄的大概地点,如下图:

image.png

常用的获取相册资源的内容差不多就这些了,等下次再更新一下对相册资源的操作内容

上一篇 下一篇

猜你喜欢

热点阅读