苹果官方文档中文译本之-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 及以后


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容

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