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