江门站官网,WordPress文章相册插件,杭州 做网站,做a的网站有哪些PHAsset部分属性解析 1、HDR 和全景照片 mediaSubtypes 属性验证资源库中的图像在捕捉时是否开启了 HDR#xff0c;拍摄时是否使用了相机应用的全景模式。 2、收藏和隐藏资源 要验证一个资源是否被用户标记为收藏或被隐藏#xff0c;只要检查 PHAsset 实例的 favorite 和 hid… PHAsset部分属性解析 1、HDR 和全景照片 mediaSubtypes 属性验证资源库中的图像在捕捉时是否开启了 HDR拍摄时是否使用了相机应用的全景模式。 2、收藏和隐藏资源 要验证一个资源是否被用户标记为收藏或被隐藏只要检查 PHAsset 实例的 favorite 和 hidden 属性即可。 3、连拍模式照片 对于一个资源如果其 PHAsset 的 representsBurst 属性为 true则表示这个资源是一系列连拍照片中的代表照片 (多张照片是在用户按住快门时拍摄的)。它还有一个属性是 burstIdentifier如果想要获取连拍照片中的剩余的其他照片可以通过将这个值传入 fetchAssetsWithBurstIdentifier(...) 方法来获取。 用户可以在连拍的照片中做标记此外系统也会自动用各种试探来标记用户可能会选择的潜在代表照片。这个元数据是可以通过PHAsset 的 burstSelectionTypes 属性来访问。这个属性是用三个常量组成的位掩码.UserPick 表示用户手动标记的资源.AutoPick 表示用户可能标记的潜在资源.None 表示没有标记的资源。 获取图像 static PHImageRequestOptions *requestOptions; if (!requestOptions) { requestOptions [[PHImageRequestOptions alloc] init]; requestOptions.deliveryMode PHImageRequestOptionsDeliveryModeOpportunistic; requestOptions.resizeMode PHImageRequestOptionsResizeModeFast; } photoCell.requestID [[PHImageManager defaultManager] requestImageForAsset:asset targetSize:CGSizeMake(CGRectGetWidth(photoCell.thumbView.frame) ,CGRectGetHeight(photoCell.thumbView.frame) ) contentMode:PHImageContentModeAspectFill options:requestOptions resultHandler:^(UIImage *result, NSDictionary *info) { photoCell.thumbView.image result; }]; 1、PHImageRequestOptions类用于定制请求。 上面的方法返回指定尺寸的图像如果你仅仅指定必要的参数而没有对 options 进行配置的话返回的图像尺寸将会是原始图像的尺寸。或者你指定的尺寸很小这时候会按照你的要求来返回接近该尺寸的图像。PHImageRequestOptions有以下几个重要的属性 synchronous指定请求是否同步执行。 默认为 NO如果 synchronous 为 YES即同步请求时deliveryMode 会被视为 PHImageRequestOptionsDeliveryModeHighQualityFormat即自动返回高质量的图片因此不建议使用同步请求否则如果界面需要等待返回的图像才能进一步作出反应则反应时长会很长。 resizeMode对请求的图像怎样缩放。有三种选择None不缩放Fast尽快地提供接近或稍微大于要求的尺寸Exact精准提供要求的尺寸。resizeMode 默认是 None这也造成了返回图像尺寸与要求尺寸不符。这点需要注意。要返回一个指定尺寸的图像需要避免两层陷阱一定要指定 options 参数resizeMode 不能为 None。 deliveryMode图像质量。有三种值Opportunistic在速度与质量中均衡HighQualityFormat不管花费多长时间提供高质量图像FastFormat以最快速度提供好的质量。这个属性只有在 synchronous 为 true 时有效。 normalizedCropRect用于对原始尺寸的图像进行裁剪基于比例坐标。只在 resizeMode 为 Exact 时有效。 networkAccessAllowed 参数控制是否允许网络请求默认为 NO如果不允许网络请求那么就没有然后了当然也拉取不到 iCloud 的图像原件。在 PhotoKit 中对 iCloud 照片库有很好的支持如果用户开启了 iCloud 照片库并且选择了“优化 iPhone/iPad 储存空间”或者选择了“下载并保留原件”但原件还没有加载好的时候PhotoKit 也会预先拿到这些非本地图像的 PHAsset但是由于本地并没有原图所以如果产生了请求高清图的请求PHotoKit 会尝试从 iCloud 下载图片而这个行为最终的表现会被 PHImageRequestOptions 中的值所影响。 versions这个属性是指获取的图像是否需要包含系统相册“编辑”功能处理过的信息如滤镜旋转等 .Current 会递送包含所有调整和修改的图像.Unadjusted 会递送未被施加任何修改的图像.Original 会递送原始的、最高质量的格式的图像 (例如 RAW 格式的数据。而当将属性设置为 .Unadjusted 时会递送一个 JPEG)。 2、progressHandler 还有一个与 iCloud 密切相关的属性 progressHandler当图像需要从 iCloud 下载时这个 block 会被自动调用block 中会返回图像下载的进度图像的信息出错信息。开发者可以利用这些信息反馈给用户当前图像的下载进度以及状况但需要注意 progressHandler 不在主线程上执行因此在其中需要操作 UI则需要手工放到主线程执行。 requestImageForAsset 中的参数 resultHandler 可能会被多次调用这种情况就是图像需要从 iCloud 中下载的情况。在 requestImageForAsset 返回的内容中一开始的那一次请求中会返回一个小尺寸的图像版本当高清图像还在下载时开发者可以首先给用户展示这个低清的图像版本然后 block 在多次调用后最终会返回高清的原图。至于当前返回的图像是哪个版本的图像可以通过 block 返回的 NSDictionary info 中获知PHImageResultIsDegradedKey 表示当前返回的 UIImage 是低清图。如果需要判断是否已经获得高清图可以这样判断 // 排除取消错误低清图三种情况即已经获取到了高清图 BOOL downloadFinined ![[info objectForKey:PHImageCancelledKey] boolValue] ![info objectForKey:PHImageErrorKey] ![[info objectForKey:PHImageResultIsDegradedKey] boolValue]; 3、info 字典提供了关于当前请求状态的信息比如 图像是否必须从 iCloud 请求 (如果你初始化时将 networkAccessAllowed 设置成 false那么就必须重新请求图像) —— PHImageResultIsInCloudKey 。 当前递送的 UIImage 是否是最终结果的低质量格式。当高质量图像正在下载时这个可以让你给用户先展示一个预览图—PHImageResultIsDegradedKey。 请求 ID (可以便捷的取消请求)以及请求是否已经被取消 —— PHImageResultRequestIDKey 和 PHImageCancelledKey。 如果没有图像提供给 result handler字典内还会有一个错误信息 —PHImageErrorKey。 这些值可以让你更新你的 UI 来告知用户和上面讨论到的 progressHandler 一起来表示出它们的加载状态。 取消获取图像icode下载 [[PHImageManager defaultManager] cancelImageRequest:(PHImageRequestID)photoCell.requestID]; 转载于:https://www.cnblogs.com/huaixu/p/6699368.html