苹果官方文档中文译本之-PHAdjustmentData

隶属:Photos.framework


PHAdjustmentData(adjustmentData,调整的数据)

当用户编辑了一个asset(相册中的多媒体文件)、Photos框架会随着修改后的图像或视频数据生成一个adjustmentData对象。这个对象提供了程序默认的初始数据可以用来重现恢复这个编辑过的asset。
例如:如果你对一张照片进行了滤镜处理,你应该会创建一个adjustmentData对象,它记录了用户选择了什么滤镜、相关配置的参数、以及使用这(款/些)滤镜的命令。接下去,用户可以用你的app或者别的可以获取你的adjustmentData对象的app来恢复这张照片到初始状态。

  • 当你在编辑一个asset时,你就会创建一个adjustmentData对象进行工作。它可以通过两种方法进行工作:
    一、直接让asset对象调用PHAsset(PHContentEditingInput)类目中的requestContentEditingInputWithOptions:completionHandler:方法。
    二、让相关照片编辑的视图控制器实现PhotosUI.frameworkPHContentEditingController协议的方法。

  • 当用户通过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对象

❗️相关探讨:
formatIdentifierformatVersion这两个参数可以帮助你在编辑已经编辑过的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 及以后


更多章节,未完待续...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • http://liuxing.info/2017/06/30/Spring%20AMQP%E4%B8%AD%E6%...
    sherlock_6981阅读 16,196评论 2 11
  • 许多UIView的子类,如一个UIButton或一个UILabel,它们知道怎么绘制自己。迟早,你也将想要做一些自...
    shenzhenboy阅读 1,753评论 2 8
  • 如果不能去改变世界,那就被世界改变 我们期望美好的事物一直静止,至少停顿. 我们以为那是最理想的世界. 就像蚂蚁的...
    林润生阅读 253评论 0 2
  • 一 我有病 我知道 二 究竟是谁 先为自己的原罪 做了言不由衷的忏悔 三 借君一寸席 诉我二三两心意 四 我知道 ...
    零琋阅读 347评论 5 4
  • 从关于毕业设计的方案下来后,小卫就一直像装了心事,每天愁眉不展。小卫认为创作一个好的作品一定要有一个好的团...
    疙瘩尔阅读 1,248评论 0 1

友情链接更多精彩内容