11
11
12
12
// / Asset 的类型
13
13
typedef NS_ENUM (NSUInteger , QMUIAssetType) {
14
- QMUIAssetTypeUnknow, // 未知类型的 Asset
15
- QMUIAssetTypeImage, // 图片类型的 Asset
16
- QMUIAssetTypeVideo, // 视频类型的 Asset
17
- QMUIAssetTypeAudio NS_ENUM_AVAILABLE_IOS (8_0), // 音频类型的 Asset,仅被 PhotoKit 支持,因此只适用于 iOS 8.0
18
- QMUIAssetTypeLivePhoto NS_ENUM_AVAILABLE_IOS (9_1) // Live Photo 类型的 Asset,仅被 PhotoKit 支持,因此只适用于 iOS 9.1
14
+ QMUIAssetTypeUnknow, // 未知类型的 Asset
15
+ QMUIAssetTypeImage, // 图片类型的 Asset
16
+ QMUIAssetTypeVideo, // 视频类型的 Asset
17
+ QMUIAssetTypeAudio // 音频类型的 Asset
18
+ };
19
+
20
+ typedef NS_ENUM (NSUInteger , QMUIAssetSubType) {
21
+ QMUIAssetSubTypeUnknow, // 未知类型
22
+ QMUIAssetSubTypeImage, // 静态图片类型
23
+ QMUIAssetSubTypeLivePhoto NS_ENUM_AVAILABLE_IOS (9_1), // Live Photo 类型
24
+ QMUIAssetSubTypeGIF // GIF类型
19
25
};
20
26
21
27
// / 从 iCloud 请求 Asset 大图的状态
@@ -27,17 +33,15 @@ typedef NS_ENUM(NSUInteger, QMUIAssetDownloadStatus) {
27
33
};
28
34
29
35
30
- @class ALAsset;
31
36
@class PHAsset;
32
37
33
38
@interface QMUIAsset : NSObject
34
39
35
40
@property (nonatomic , assign , readonly ) QMUIAssetType assetType;
41
+ @property (nonatomic , assign , readonly ) QMUIAssetSubType assetSubType;
36
42
37
43
- (instancetype )initWithPHAsset : (PHAsset *)phAsset ;
38
44
39
- - (instancetype )initWithALAsset : (ALAsset *)alAsset ;
40
-
41
45
@property (nonatomic , assign , readonly ) QMUIAssetDownloadStatus downloadStatus; // 从 iCloud 下载资源大图的状态
42
46
@property (nonatomic , assign ) double downloadProgress; // 从 iCloud 下载资源大图的进度
43
47
@property (nonatomic , assign ) NSInteger requestID; // 从 iCloud 请求获得资源的大图的请求 ID
@@ -48,7 +52,7 @@ typedef NS_ENUM(NSUInteger, QMUIAssetDownloadStatus) {
48
52
/* *
49
53
* Asset 的缩略图
50
54
*
51
- * @param size 指定返回的缩略图的大小,仅在 iOS 8.0 及以上的版本有效,其他版本则调用 ALAsset 的接口由系统返回一个合适当前平台的图片
55
+ * @param size 指定返回的缩略图的大小
52
56
*
53
57
* @return Asset 的缩略图
54
58
*/
@@ -57,29 +61,27 @@ typedef NS_ENUM(NSUInteger, QMUIAssetDownloadStatus) {
57
61
/* *
58
62
* Asset 的预览图
59
63
*
60
- * @warning 仿照 ALAssetsLibrary 的做法输出与当前设备屏幕大小相同尺寸的图片 ,如果图片原图小于当前设备屏幕的尺寸,则只输出原图大小的图片
64
+ * @warning 输出与当前设备屏幕大小相同尺寸的图片 ,如果图片原图小于当前设备屏幕的尺寸,则只输出原图大小的图片
61
65
* @return Asset 的全屏图
62
66
*/
63
67
- (UIImage *)previewImage ;
64
68
65
69
/* *
66
70
* 异步请求 Asset 的原图,包含了系统照片“编辑”功能处理后的效果(剪裁,旋转和滤镜等),可能会有网络请求
67
71
*
68
- * @param completion 完成请求后调用的 block,参数中包含了请求的原图以及图片信息,在 iOS 8.0 或以上版本中 ,
69
- * 这个 block 会被多次调用, 其中第一次调用获取到的尺寸很小的低清图,然后不断调用,直到获取到高清图。
72
+ * @param completion 完成请求后调用的 block,参数中包含了请求的原图以及图片信息,这个 block 会被多次调用 ,
73
+ * 其中第一次调用获取到的尺寸很小的低清图,然后不断调用,直到获取到高清图。
70
74
* @param phProgressHandler 处理请求进度的 handler,不在主线程上执行,在 block 中修改 UI 时注意需要手工放到主线程处理。
71
75
*
72
- * @wraning iOS 8.0 以下中并没有异步请求预览图的接口,因此实际上为同步请求,这时 block 中的第二个参数(图片信息)返回的为 nil。
73
- *
74
76
* @return 返回请求图片的请求 id
75
77
*/
76
78
- (NSInteger )requestOriginImageWithCompletion : (void (^)(UIImage *result, NSDictionary <NSString *, id> *info))completion withProgressHandler : (PHAssetImageProgressHandler)phProgressHandler ;
77
79
78
80
/* *
79
81
* 异步请求 Asset 的缩略图,不会产生网络请求
80
82
*
81
- * @param size 指定返回的缩略图的大小,仅在 iOS 8.0 及以上的版本有效,其他版本则调用 ALAsset 的接口由系统返回一个合适当前平台的图片
82
- * @param completion 完成请求后调用的 block,参数中包含了请求的缩略图以及图片信息,在 iOS 8.0 或以上版本中, 这个 block 会被多次调用,
83
+ * @param size 指定返回的缩略图的大小
84
+ * @param completion 完成请求后调用的 block,参数中包含了请求的缩略图以及图片信息,这个 block 会被多次调用,
83
85
* 其中第一次调用获取到的尺寸很小的低清图,然后不断调用,直到获取到高清图,这时 block 中的第二个参数(图片信息)返回的为 nil。
84
86
*
85
87
* @return 返回请求图片的请求 id
@@ -89,12 +91,10 @@ typedef NS_ENUM(NSUInteger, QMUIAssetDownloadStatus) {
89
91
/* *
90
92
* 异步请求 Asset 的预览图,可能会有网络请求
91
93
*
92
- * @param completion 完成请求后调用的 block,参数中包含了请求的预览图以及图片信息,在 iOS 8.0 或以上版本中 ,
93
- * 这个 block 会被多次调用, 其中第一次调用获取到的尺寸很小的低清图,然后不断调用,直到获取到高清图。
94
+ * @param completion 完成请求后调用的 block,参数中包含了请求的预览图以及图片信息,这个 block 会被多次调用 ,
95
+ * 其中第一次调用获取到的尺寸很小的低清图,然后不断调用,直到获取到高清图。
94
96
* @param phProgressHandler 处理请求进度的 handler,不在主线程上执行,在 block 中修改 UI 时注意需要手工放到主线程处理。
95
97
*
96
- * @wraning iOS 8.0 以下中并没有异步请求预览图的接口,因此实际上为同步请求,这时 block 中的第二个参数(图片信息)返回的为 nil。
97
- *
98
98
* @return 返回请求图片的请求 id
99
99
*/
100
100
- (NSInteger )requestPreviewImageWithCompletion : (void (^)(UIImage *result, NSDictionary <NSString *, id> *info))completion withProgressHandler : (PHAssetImageProgressHandler)phProgressHandler ;
@@ -117,20 +117,16 @@ typedef NS_ENUM(NSUInteger, QMUIAssetDownloadStatus) {
117
117
* @param completion 完成请求后调用的 block,参数中包含了请求的 AVPlayerItem 以及相关信息,若 assetType 不是 QMUIAssetTypeVideo 则为 nil
118
118
* @param phProgressHandler 处理请求进度的 handler,不在主线程上执行,在 block 中修改 UI 时注意需要手工放到主线程处理。
119
119
*
120
- * @wraning iOS 8.0 以下中并没有异步请求 AVPlayerItem 的接口,因此实际上为同步请求,这时 block 中的第二个参数(AVPlayerItem 相关信息)返回的为 nil。
121
- *
122
120
* @return 返回请求 AVPlayerItem 的请求 id
123
121
*/
124
122
- (NSInteger )requestPlayerItemWithCompletion : (void (^)(AVPlayerItem *playerItem, NSDictionary <NSString *, id> *info))completion withProgressHandler : (PHAssetVideoProgressHandler)phProgressHandler ;
125
123
126
124
/* *
127
125
* 异步请求图片的 Data
128
126
*
129
- * @param completion 完成请求后调用的 block,参数中包含了请求的图片 Data(若 assetType 不是 QMUIAssetTypeImage 或 QMUIAssetTypeLivePhoto 则为 nil),以及该图片是否为 GIF 的判断值
130
- *
131
- * @wraning iOS 8.0 以下中并没有异步请求 Data 的接口,因此实际上为同步请求,这时 block 中的第二个参数(图片信息)返回的为 nil。
127
+ * @param completion 完成请求后调用的 block,参数中包含了请求的图片 Data(若 assetType 不是 QMUIAssetTypeImage 或 QMUIAssetTypeLivePhoto 则为 nil),该图片是否为 GIF 的判断值,以及该图片的文件格式是否为 HEIC
132
128
*/
133
- - (void )requestImageData : (void (^)(NSData *imageData, NSDictionary <NSString *, id> *info, BOOL isGif ))completion ;
129
+ - (void )requestImageData : (void (^)(NSData *imageData, NSDictionary <NSString *, id> *info, BOOL isGIF, BOOL isHEIC ))completion ;
134
130
135
131
/* *
136
132
* 获取图片的 UIImageOrientation 值,仅 assetType 为 QMUIAssetTypeImage 或 QMUIAssetTypeLivePhoto 时有效
0 commit comments