隸屬:Photos.framework
PHAdjustmentData(adjustmentData哼勇,調(diào)整的數(shù)據(jù))
當(dāng)用戶編輯了一個(gè)asset(相冊(cè)中的多媒體文件)、Photos框架會(huì)隨著修改后的圖像或視頻數(shù)據(jù)生成一個(gè)adjustmentData
對(duì)象。這個(gè)對(duì)象提供了程序默認(rèn)的初始數(shù)據(jù)可以用來重現(xiàn)恢復(fù)這個(gè)編輯過的asset荔燎。
例如:如果你對(duì)一張照片進(jìn)行了濾鏡處理,你應(yīng)該會(huì)創(chuàng)建一個(gè)adjustmentData
對(duì)象丢胚,它記錄了用戶選擇了什么濾鏡、相關(guān)配置的參數(shù)受扳、以及使用這(款/些)濾鏡的命令携龟。接下去,用戶可以用你的app或者別的可以獲取你的adjustmentData
對(duì)象的app來恢復(fù)這張照片到初始狀態(tài)勘高。
當(dāng)你在編輯一個(gè)asset時(shí)峡蟋,你就會(huì)創(chuàng)建一個(gè)
adjustmentData
對(duì)象進(jìn)行工作。它可以通過兩種方法進(jìn)行工作:
一华望、直接讓asset對(duì)象調(diào)用PHAsset(PHContentEditingInput)
類目中的requestContentEditingInputWithOptions:completionHandler:
方法蕊蝗。
二、讓相關(guān)照片編輯的視圖控制器實(shí)現(xiàn)PhotosUI.framework
中PHContentEditingController
協(xié)議的方法赖舟。當(dāng)用戶通過
PHContentEditingInput
對(duì)象開始進(jìn)行一個(gè)asset編輯蓬戚,會(huì)通過檢查PHContentEditingInput
對(duì)象的adjustmentData
屬性來決定該asset上一次的編輯結(jié)果是否與你的app兼容,如果兼容宾抓,則用戶可以將asset恢復(fù)到初始狀態(tài)子漩,否則只能對(duì)上一次的操作做進(jìn)一步的修改。當(dāng)用戶通過
PHContentEditingOutput
對(duì)象來進(jìn)行編輯asset洞慎,會(huì)提供一個(gè)代表由你的app做操作而生成的一個(gè)全新的adjustmentData
對(duì)象痛单。
對(duì)于每個(gè)asset來說,Photos框架只會(huì)儲(chǔ)存一個(gè)adjustmentData
對(duì)象劲腿,它記錄了最近一次對(duì)asset做出的編輯旭绒。
-創(chuàng)建一個(gè)adjustmentData
對(duì)象
調(diào)用下面這個(gè)方法可以通過特定的格式和數(shù)據(jù)初始化一個(gè)adjustmentData
對(duì)象。
SWIFT
init(formatIdentifier formatIdentifier: String,
formatVersion formatVersion: String,
data data: NSData)
OBJECTIVE-C
- (instancetype)initWithFormatIdentifier:(NSString *)formatIdentifier
formatVersion:(NSString *)formatVersion
data:(NSData *)data
??參數(shù)說明:
formatIdentifier:該對(duì)象格式的唯一標(biāo)識(shí)
formatVersion:該對(duì)象格式的版本號(hào)
data:一個(gè)用以表達(dá)哪些信息在會(huì)被用到adjustmentData
中的序列化的表格
??返回值:
一個(gè)初始化了的adjustmentData
對(duì)象
??相關(guān)探討:
formatIdentifier
和formatVersion
這兩個(gè)參數(shù)可以幫助你在編輯已經(jīng)編輯過的asset時(shí)知道是否要解析adjustmentData
以及怎么去解析焦人,為了區(qū)別是不是你的app作出的改動(dòng)挥吵,最好的辦法就是使用逆向DNS標(biāo)識(shí)符和遞進(jìn)的版本號(hào)。
例如:你的app第一版開發(fā)好了花椭,你可以用com.example.myApp
作為標(biāo)識(shí)符以及設(shè)置版本號(hào)為1.0忽匈,用他倆來保存你的adjustmentData
,如果你的app下一版加了一些不兼容的信息給adjustmentData
矿辽,你可以用同樣的標(biāo)識(shí)符并且將版本號(hào)增加至2.0丹允。
用data
參數(shù)來保存不管是不是對(duì)你的app有用的數(shù)據(jù),它只是為了讓asset可以重現(xiàn)恢復(fù)袋倔。
例如:如果你的app給一張照片使用了一款CoreImage
中的濾鏡雕蔽,你可以用這個(gè)屬性去保存一個(gè)描述了這款濾鏡和它的相關(guān)參數(shù)的序列化的表格。
提示:因?yàn)镻hotos框架限制了`adjustmentData `的大小宾娜,你需要保證你修改的信息短小而精悍批狐,不要用圖片來描述你的修改,只保存修改所必須用到的最小的信息前塔。
你的app必須提供一個(gè)不為空的NSData
對(duì)象來作為data
參數(shù)嚣艇,如果你不能提供承冰,你可以傳一個(gè)經(jīng)過編碼的NSUUID
對(duì)象來作為data
參數(shù)。
??可用性:
iOS 8.0 及以后
-識(shí)別一個(gè)adjustmentData
對(duì)象的格式
formatIdentifier
屬性(只讀)食零,用以唯一識(shí)別adjustmentData
困乒。
SWIFT
var formatIdentifier: String { get }
OBJECTIVE-C
@property(readonly, copy) NSString *formatIdentifier
??相關(guān)探討:
當(dāng)你通過調(diào)用initWithFormatIdentifier:formatVersion:data:
方法創(chuàng)建一個(gè)adjustmentData
對(duì)象時(shí)會(huì)給這個(gè)屬性賦值,最好是通過你的團(tuán)隊(duì)或產(chǎn)品的逆向DNS的名字來設(shè)置慌洪,比如com.example.myApp
顶燕。
通過讀取該屬性和formatVersion
屬性來確定adjustmentData
是通過你的app創(chuàng)建的還是其他兼容的app。
??可用性:
iOS 8.0 及以后
formatVersion
屬性(只讀)冈爹,用以告知一個(gè)adjustmentData
格式的版本號(hào)涌攻。
SWIFT
var formatVersion: String { get }
OBJECTIVE-C
@property(readonly, copy) NSString *formatVersion
??相關(guān)探討:
當(dāng)你通過調(diào)用initWithFormatIdentifier:formatVersion:data:
方法創(chuàng)建一個(gè)adjustmentData
對(duì)象時(shí)會(huì)給這個(gè)屬性賦值。
通過讀取該屬性和formatIdentifier
屬性來確定adjustmentData
是通過你的app創(chuàng)建的還是其他兼容的app频伤。
例如:你的app第一版開發(fā)好了恳谎,你可以用com.example.myApp
作為標(biāo)識(shí)符以及設(shè)置版本號(hào)為1.0,用他倆來保存你的adjustmentData
憋肖,如果你的app下一版加了一些不兼容的信息給adjustmentData
因痛,你可以用同樣的標(biāo)識(shí)符并且將版本號(hào)增加至2.0。
??可用性:
iOS 8.0 及以后
-識(shí)別一個(gè)adjustmentData
對(duì)象的格式
data
屬性(只讀)岸更,包含了adjustmentData
所需的必要信息鸵膏。
SWIFT
var data: NSData { get }
OBJECTIVE-C
@property(readonly, strong) NSData *data
??相關(guān)探討:
用這個(gè)屬性可以恢復(fù)對(duì)asset上一次的編輯。
例如:如果你的app給一張照片使用了一款CoreImage
中的濾鏡怎炊,你可以用這個(gè)屬性去保存一個(gè)描述了這款濾鏡和它的相關(guān)參數(shù)的序列化的表格谭企。用formatIdentifier
屬性和formatVersion
來確定你的app是否可以解析保存的adjustmentData
。
??可用性:
iOS 8.0 及以后