这里主要说自定义选择器的方法:
用到的方法:requestImage(for asset:PHAsset, targetSize:CGSize, contentMode:PHImageContentMode, options:PHImageRequestOptions?, resultHandler:@escaping(UIImage?, [AnyHashable:Any]?) ->Void)
具体的属性:options:PHImageRequestOptions
获取裁剪后的图片:options.version = .current
下面主要是介绍PHImageRequestOptions的各个属性,默认值都写着呢。
1.@available(iOS 8, *)
open var version: PHImageRequestOptionsVersion // version
typedefNS_ENUM(NSInteger,PHImageRequestOptionsVersion){PHImageRequestOptionsVersionCurrent=0,// 图片的最新版本(包括所有编辑版本)PHImageRequestOptionsVersionUnadjusted,// 原版,无任何调整编辑PHImageRequestOptionsVersionOriginal// 原始的高保真的版本}PHOTOS_ENUM_AVAILABLE_IOS_TVOS(8_0,10_0);
2.@available(iOS 8, *)
open var deliveryMode: PHImageRequestOptionsDeliveryMode // delivery mode. Defaults to PHImageRequestOptionsDeliveryModeOpportunistic
public enum PHImageRequestOptionsDeliveryMode : Int {
@available(iOS 8, *)
case opportunistic // 异步可能取到好多张图(包括原图),如果你要取原图,用同步方法,返回一张
@available(iOS 8, *)
case highQualityFormat // 获取一张图片,质量中等的,请求速度比较快。
@available(iOS 8, *)
case fastFormat // 获取质量比较差的一张图片,速度真的挺快,谨慎使用,质量真的差
}
3.@available(iOS 8, *)
open var resizeMode: PHImageRequestOptionsResizeMode // resize mode. Does not apply when size is PHImageManagerMaximumSize. Defaults to PHImageRequestOptionsResizeModeFast 这里注意一下,使用PHImageManagerMaximumSize的时候这个属性没用了。
@available(iOS 8, iOS 8, *)
public enum PHImageRequestOptionsResizeMode : Int {
@available(iOS 8, *)
case none // 不作调整(不是默认值)
@available(iOS 8, *)
case fast // 最快的作出调整,但是可能比给定大小略大一些。(略坑)
@available(iOS 8, *)
case exact // 和给定大小一样大,但是使用normalizedCropRect的时候必须用使用这个枚举
}
4.@available(iOS 8, *)
open var normalizedCropRect: CGRect // specify crop rectangle in unit coordinates of the original image, such as a face. Defaults to CGRectZero (not applicable)。 做裁剪用的,必须在原始尺寸。坐标系原点是左上角
5.@available(iOS 8, *)
open var isNetworkAccessAllowed: Bool // if necessary will download the image from iCloud (client can monitor or cancel using progressHandler). Defaults to NO (see start/stopCachingImagesForAssets)。 在需要的时候从icloud下载图片,下载进度需要通过progressHandler获得。
6.@available(iOS 8, *)
open var isSynchronous: Bool // return only a single result, blocking until available (or failure). Defaults to NO。 是否是同步网络,默认是no
7.@available(iOS 8, *)
open var progressHandler: PHAssetImageProgressHandler? // provide caller a way to be told how much progress has been made prior to delivering the data when it comes from iCloud. Defaults to nil, shall be set by caller。 下载进度
public typealias PHAssetImageProgressHandler = (Double, Error?, UnsafeMutablePointer<ObjCBool>, [AnyHashable : Any]?) -> Void
这就是一个回调,返回下载进度。
网友评论