苹果官方文档中文译本之-PHAdjustmentData
隶属:Photos.framework
PHAdjustmentData(adjustmentData,调整的数据)
当用户编辑了一个asset(相册中的多媒体文件)、Photos框架会随着修改后的图像或视频数据生成一个adjustmentData
对象。这个对象提供了程序默认的初始数据可以用来重现恢复这个编辑过的asset。
例如:如果你对一张照片进行了滤镜处理,你应该会创建一个adjustmentData
对象,它记录了用户选择了什么滤镜、相关配置的参数、以及使用这(款/些)滤镜的命令。接下去,用户可以用你的app或者别的可以获取你的adjustmentData
对象的app来恢复这张照片到初始状态。
-
当你在编辑一个asset时,你就会创建一个
adjustmentData
对象进行工作。它可以通过两种方法进行工作:
一、直接让asset对象调用PHAsset(PHContentEditingInput)
类目中的requestContentEditingInputWithOptions:completionHandler:
方法。
二、让相关照片编辑的视图控制器实现PhotosUI.framework
中PHContentEditingController
协议的方法。 -
当用户通过
PHContentEditingInput
对象开始进行一个asset编辑,会通过检查PHContentEditingInput
对象的adjustmentData
属性来决定该asset上一次的编辑结果是否与你的app兼容,如果兼容,则用户可以将asset恢复到初始状态,否则只能对上一次的操作做进一步的修改。 -
当用户通过
PHContentEditingOutput
对象来进行编辑asset,会提供一个代表由你的app做操作而生成的一个全新的adjustmentData
对象。
对于每个asset来说,Photos框架只会储存一个adjustmentData
对象,它记录了最近一次对asset做出的编辑。
-创建一个adjustmentData
对象
调用下面这个方法可以通过特定的格式和数据初始化一个adjustmentData
对象。
SWIFT
init(formatIdentifier formatIdentifier: String,
formatVersion formatVersion: String,
data data: NSData)
OBJECTIVE-C
- (instancetype)initWithFormatIdentifier:(NSString *)formatIdentifier
formatVersion:(NSString *)formatVersion
data:(NSData *)data
❗️参数说明:
formatIdentifier:该对象格式的唯一标识
formatVersion:该对象格式的版本号
data:一个用以表达哪些信息在会被用到adjustmentData
中的序列化的表格
❗️返回值:
一个初始化了的adjustmentData
对象
❗️相关探讨:
formatIdentifier
和formatVersion
这两个参数可以帮助你在编辑已经编辑过的asset时知道是否要解析adjustmentData
以及怎么去解析,为了区别是不是你的app作出的改动,最好的办法就是使用逆向DNS标识符和递进的版本号。
例如:你的app第一版开发好了,你可以用com.example.myApp
作为标识符以及设置版本号为1.0,用他俩来保存你的adjustmentData
,如果你的app下一版加了一些不兼容的信息给adjustmentData
,你可以用同样的标识符并且将版本号增加至2.0。
用data
参数来保存不管是不是对你的app有用的数据,它只是为了让asset可以重现恢复。
例如:如果你的app给一张照片使用了一款CoreImage
中的滤镜,你可以用这个属性去保存一个描述了这款滤镜和它的相关参数的序列化的表格。
提示:因为Photos框架限制了`adjustmentData `的大小,你需要保证你修改的信息短小而精悍,不要用图片来描述你的修改,只保存修改所必须用到的最小的信息。
你的app必须提供一个不为空的NSData
对象来作为data
参数,如果你不能提供,你可以传一个经过编码的NSUUID
对象来作为data
参数。
❗️可用性:
iOS 8.0 及以后
-识别一个adjustmentData
对象的格式
formatIdentifier
属性(只读),用以唯一识别adjustmentData
。
SWIFT
var formatIdentifier: String { get }
OBJECTIVE-C
@property(readonly, copy) NSString *formatIdentifier
❗️相关探讨:
当你通过调用initWithFormatIdentifier:formatVersion:data:
方法创建一个adjustmentData
对象时会给这个属性赋值,最好是通过你的团队或产品的逆向DNS的名字来设置,比如com.example.myApp
。
通过读取该属性和formatVersion
属性来确定adjustmentData
是通过你的app创建的还是其他兼容的app。
❗️可用性:
iOS 8.0 及以后
formatVersion
属性(只读),用以告知一个adjustmentData
格式的版本号。
SWIFT
var formatVersion: String { get }
OBJECTIVE-C
@property(readonly, copy) NSString *formatVersion
❗️相关探讨:
当你通过调用initWithFormatIdentifier:formatVersion:data:
方法创建一个adjustmentData
对象时会给这个属性赋值。
通过读取该属性和formatIdentifier
属性来确定adjustmentData
是通过你的app创建的还是其他兼容的app。
例如:你的app第一版开发好了,你可以用com.example.myApp
作为标识符以及设置版本号为1.0,用他俩来保存你的adjustmentData
,如果你的app下一版加了一些不兼容的信息给adjustmentData
,你可以用同样的标识符并且将版本号增加至2.0。
❗️可用性:
iOS 8.0 及以后
-识别一个adjustmentData
对象的格式
data
属性(只读),包含了adjustmentData
所需的必要信息。
SWIFT
var data: NSData { get }
OBJECTIVE-C
@property(readonly, strong) NSData *data
❗️相关探讨:
用这个属性可以恢复对asset上一次的编辑。
例如:如果你的app给一张照片使用了一款CoreImage
中的滤镜,你可以用这个属性去保存一个描述了这款滤镜和它的相关参数的序列化的表格。用formatIdentifier
属性和formatVersion
来确定你的app是否可以解析保存的adjustmentData
。
❗️可用性:
iOS 8.0 及以后