QMUIAsset
@interface QMUIAsset : NSObject
相册里某一个资源的包装对象,该资源可能是图片、视频等。
Note
QMUIAsset 重写了 isEqual: 方法,只要两个 QMUIAsset 的 identifier 相同,则认为是同一个对象,以方便在数组、字典等容器中对大量 QMUIAsset 进行遍历查找等操作。-
Undocumented
Declaration
Objective-C
@property(nonatomic, assign, readonly) QMUIAssetType assetType
Swift
var assetType: QMUIAssetType { get }
-
Undocumented
Declaration
Objective-C
@property(nonatomic, assign, readonly) QMUIAssetSubType assetSubType
Swift
var assetSubType: QMUIAssetSubType { get }
-
Undocumented
Declaration
Objective-C
- (instancetype)initWithPHAsset:(PHAsset *)phAsset;
Swift
init!(phAsset: PHAsset!)
-
Undocumented
Declaration
Objective-C
@property(nonatomic, strong, readonly) PHAsset *phAsset
Swift
var phAsset: PHAsset! { get }
-
Undocumented
Declaration
Objective-C
@property(nonatomic, assign, readonly) QMUIAssetDownloadStatus downloadStatus
Swift
var downloadStatus: QMUIAssetDownloadStatus { get }
-
Undocumented
Declaration
Objective-C
@property(nonatomic, assign) double downloadProgress
Swift
var downloadProgress: Double { get set }
-
Undocumented
Declaration
Objective-C
@property(nonatomic, assign) NSInteger requestID
Swift
var requestID: Int { get set }
-
Undocumented
Declaration
Objective-C
@property (nonatomic, copy, readonly) NSString *identifier
Swift
var identifier: String! { get }
-
Asset 的原图(包含系统相册“编辑”功能处理后的效果)
Declaration
Objective-C
- (UIImage *)originImage;
Swift
func originImage() -> UIImage!
-
Asset 的缩略图
Declaration
Objective-C
- (UIImage *)thumbnailWithSize:(CGSize)size;
Swift
func thumbnail(with size: CGSize) -> UIImage!
Parameters
size
指定返回的缩略图的大小,pt 为单位
Return Value
Asset 的缩略图
-
Asset 的预览图
Warning
输出与当前设备屏幕大小相同尺寸的图片,如果图片原图小于当前设备屏幕的尺寸,则只输出原图大小的图片Declaration
Objective-C
- (UIImage *)previewImage;
Swift
func previewImage() -> UIImage!
Return Value
Asset 的全屏图
-
异步请求 Asset 的原图,包含了系统照片“编辑”功能处理后的效果(剪裁,旋转和滤镜等),可能会有网络请求
Declaration
Objective-C
- (NSInteger)requestOriginImageWithCompletion: (void (^)(UIImage *, NSDictionary<NSString *, id> *))completion withProgressHandler: (PHAssetImageProgressHandler)phProgressHandler;
Swift
func requestOriginImage(completion: ((UIImage?, [String : Any]?) -> Void)!, withProgressHandler phProgressHandler: PHAssetImageProgressHandler!) -> Int
Parameters
completion
完成请求后调用的 block,参数中包含了请求的原图以及图片信息,这个 block 会被多次调用, 其中第一次调用获取到的尺寸很小的低清图,然后不断调用,直到获取到高清图。
phProgressHandler
处理请求进度的 handler,不在主线程上执行,在 block 中修改 UI 时注意需要手工放到主线程处理。
Return Value
返回请求图片的请求 id
-
异步请求 Asset 的缩略图,不会产生网络请求
Declaration
Objective-C
- (NSInteger)requestThumbnailImageWithSize:(CGSize)size completion: (void (^)(UIImage *, NSDictionary<NSString *, id> *)) completion;
Swift
func requestThumbnailImage(with size: CGSize, completion: ((UIImage?, [String : Any]?) -> Void)!) -> Int
Parameters
size
指定返回的缩略图的大小
completion
完成请求后调用的 block,参数中包含了请求的缩略图以及图片信息,这个 block 会被多次调用, 其中第一次调用获取到的尺寸很小的低清图,然后不断调用,直到获取到高清图,这时 block 中的第二个参数(图片信息)返回的为 nil。
Return Value
返回请求图片的请求 id
-
异步请求 Asset 的预览图,可能会有网络请求
Declaration
Objective-C
- (NSInteger)requestPreviewImageWithCompletion: (void (^)(UIImage *, NSDictionary<NSString *, id> *))completion withProgressHandler: (PHAssetImageProgressHandler)phProgressHandler;
Swift
func requestPreviewImage(completion: ((UIImage?, [String : Any]?) -> Void)!, withProgressHandler phProgressHandler: PHAssetImageProgressHandler!) -> Int
Parameters
completion
完成请求后调用的 block,参数中包含了请求的预览图以及图片信息,这个 block 会被多次调用, 其中第一次调用获取到的尺寸很小的低清图,然后不断调用,直到获取到高清图。
phProgressHandler
处理请求进度的 handler,不在主线程上执行,在 block 中修改 UI 时注意需要手工放到主线程处理。
Return Value
返回请求图片的请求 id
-
异步请求 Live Photo,可能会有网络请求
Warning
iOS 9.1 以下中并没有 Live Photo,因此无法获取有效结果。
Declaration
Objective-C
- (NSInteger)requestLivePhotoWithCompletion: (void (^)(PHLivePhoto *, NSDictionary<NSString *, id> *))completion withProgressHandler: (PHAssetImageProgressHandler)phProgressHandler;
Swift
func requestLivePhoto(completion: ((PHLivePhoto?, [String : Any]?) -> Void)!, withProgressHandler phProgressHandler: PHAssetImageProgressHandler!) -> Int
Parameters
completion
完成请求后调用的 block,参数中包含了请求的 Live Photo 以及相关信息,若 assetType 不是 QMUIAssetTypeLivePhoto 则为 nil
phProgressHandler
处理请求进度的 handler,不在主线程上执行,在 block 中修改 UI 时注意需要手工放到主线程处理。
Return Value
返回请求图片的请求 id
-
异步请求 AVPlayerItem,可能会有网络请求
Declaration
Objective-C
- (NSInteger)requestPlayerItemWithCompletion: (void (^)(AVPlayerItem *, NSDictionary<NSString *, id> *))completion withProgressHandler: (PHAssetVideoProgressHandler)phProgressHandler;
Swift
func requestPlayerItem(completion: ((AVPlayerItem?, [String : Any]?) -> Void)!, withProgressHandler phProgressHandler: PHAssetVideoProgressHandler!) -> Int
Parameters
completion
完成请求后调用的 block,参数中包含了请求的 AVPlayerItem 以及相关信息,若 assetType 不是 QMUIAssetTypeVideo 则为 nil
phProgressHandler
处理请求进度的 handler,不在主线程上执行,在 block 中修改 UI 时注意需要手工放到主线程处理。
Return Value
返回请求 AVPlayerItem 的请求 id
-
异步请求图片的 Data
Declaration
Objective-C
- (void)requestImageData:(void (^)(NSData *, NSDictionary<NSString *, id> *, BOOL, BOOL))completion;
Swift
func requestImageData(_ completion: ((Data?, [String : Any]?, Bool, Bool) -> Void)!)
Parameters
completion
完成请求后调用的 block,参数中包含了请求的图片 Data(若 assetType 不是 QMUIAssetTypeImage 或 QMUIAssetTypeLivePhoto 则为 nil),该图片是否为 GIF 的判断值,以及该图片的文件格式是否为 HEIC
-
获取图片的 UIImageOrientation 值,仅 assetType 为 QMUIAssetTypeImage 或 QMUIAssetTypeLivePhoto 时有效
Declaration
Objective-C
- (UIImageOrientation)imageOrientation;
Swift
func imageOrientation() -> UIImage.Orientation
-
更新下载资源的结果
Declaration
Objective-C
- (void)updateDownloadStatusWithDownloadResult:(BOOL)succeed;
Swift
func updateDownloadStatus(withDownloadResult succeed: Bool)
-
获取 Asset 的体积(数据大小)
Declaration
Objective-C
- (void)assetSize:(void (^)(long long))completion;
Swift
func assetSize(_ completion: ((Int64) -> Void)!)
-
Undocumented
Declaration
Objective-C
- (NSTimeInterval)duration;
Swift
func duration() -> TimeInterval