美文网首页ios学习iOS精华iOS技术专题
苹果官方文档中文译本之-PHAdjustmentData

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

作者: 大亮Coder | 来源:发表于2015-12-03 17:16 被阅读922次

    隶属: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 及以后


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

    相关文章

      网友评论

      • lsif的简书:requestContentEditingInputWithOptions:completionHandler:这个方法会有一个修改提示,"是否允许修改",请问楼主,有强制修改的方法吗?
        大亮Coder:@lsif的简书 没有
      • 寓言命理风水占测师:竟然同名,学习了
        大亮Coder:@康大亮 猿份:smile:
      • 曾樑:Photos里的滤镜没怎么用过
        大亮Coder:@曾樑 滤镜一般都是CoreImage.framework里的。相册里的照片用了滤镜后Photos.framework可以把它恢复成原图

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

      本文链接:https://www.haomeiwen.com/subject/xphshttx.html