iOS开发之AssetsLibrary框架使用详解

2020-01-21 07:12:33于海丽

上面有提到资源过滤器,资源过滤器用来设置过滤组中的资源,有3个类方法可以直接获取系统提供的过滤器:


@interface ALAssetsFilter : NSObject {
//所有图片资源
+ (ALAssetsFilter *)allPhotos;
// 所有视频资源
+ (ALAssetsFilter *)allVideos;
// 所有资源
+ (ALAssetsFilter *)allAssets;
@end

五、ALAsset资源对象

ALAsset是封装好的资源对象类,如下方法可以获取到资源中封装的属性:


- (id)valueForProperty:(NSString *)property;

属性名的定义如下:


//获取资源类型
/*
这个属性将返回一个字符串
extern NSString *const ALAssetTypePhoto//照片类型
extern NSString *const ALAssetTypeVideo//视频类型
extern NSString *const ALAssetTypeUnknown//未知类型
*/
extern NSString *const ALAssetPropertyType;
//会返回一个CLLocation对象 图片的地址信息
extern NSString *const ALAssetPropertyLocation;
//视频资源的时长 NSNumber对象
extern NSString *const ALAssetPropertyDuration;
//资源方向
extern NSString *const ALAssetPropertyOrientation;
//资源日期 会返回NSDate对象
extern NSString *const ALAssetPropertyDate;

下面列举了ALAsset中常用方法:


//获取默认的Representation对象
- (ALAssetRepresentation *)defaultRepresentation;
//获取指定的Representation对象
- (ALAssetRepresentation *)representationForUTI:(NSString *)representationUTI;
//获取资源缩略图
- (CGImageRef)thumbnail;
- (CGImageRef)aspectRatioThumbnail;
//写入图片数据
- (void)writeModifiedImageDataToSavedPhotosAlbum:(NSData *)imageData metadata:(NSDictionary *)metadata completionBlock:(ALAssetsLibraryWriteImageCompletionBlock)completionBlock;
//写入视频数据
- (void)writeModifiedVideoAtPathToSavedPhotosAlbum:(NSURL *)videoPathURL completionBlock:(ALAssetsLibraryWriteVideoCompletionBlock)completionBlock;
//原始资源对象
@property (nonatomic, readonly) ALAsset *originalAsset;
//是否允许编辑
@property (nonatomic, readonly, getter=isEditable) BOOL editable;
//替换图片数据
- (void)setImageData:(NSData *)imageData metadata:(NSDictionary *)metadata completionBlock:(ALAssetsLibraryWriteImageCompletionBlock)completionBlock;
//替换视频数据
- (void)setVideoAtPath:(NSURL *)videoPathURL completionBlock:(ALAssetsLibraryWriteVideoCompletionBlock)completionBlock;