2

私は写真編集拡張アプリに取り組んでおり、PHAdjustmentData に加えられた変更に関する情報を保存できるようにして、ユーザーが後でそれらの変更を変更できるようにしたいと考えています。必要なすべてのデータを PHAdjustmentData に保存しますが、次に画像を編集すると、PHAdjustmentData は nil になります。サンプルコードは次のとおりです。

@property (strong, nonatomic) PHContentEditingOutput *output;

- (void)startContentEditingWithInput:(PHContentEditingInput *)contentEditingInput placeholderImage:(UIImage *)placeholderImage
{
    self.output = [[PHContentEditingOutput alloc] initWithContentEditingInput:contentEditingInput];

    // here contentEditingInput.adjustmentData is always nil
}

- (void)finishContentEditingWithCompletionHandler:(void (^)(PHContentEditingOutput *))completionHandler
{
    NSMutableDictionary *dict = [NSMutableDictionary dictionary];
    [dict setObject:@"value1" forKey:@"key1"];
    [dict setObject:@"value2" forKey:@"key2"];
    NSData *adjData = [NSKeyedArchiver archivedDataWithRootObject:dict];
    PHAdjustmentData *phAdjData = [[PHAdjustmentData alloc] initWithFormatIdentifier:@"ident" formatVersion:@"1.0" data:adjData];
    self.output.adjustmentData = phAdjData;

    NSData *data = UIImageJPEGRepresentation(result, 1.0);
    [data writeToURL:self.output.renderedContentURL options:NSDataWritingAtomic error:nil];

    completionHandler(self.output);
}

次にユーザーが画像を編集するときにアクセスできるように、調整データを適切に保存するにはどうすればよいですか? ありがとう!

4

1 に答える 1

4

PhotoKit は、データのstartContentEditingWithInput処理に同意した場合にのみ調整データを提供します。canHandleAdjustmentDataフォーマット識別子と調整のバージョンを確認し、処理できるフォーマットに対して true を返すことを実装することで同意し ます。

から false を返すとcanHandleAdjustmentData、 に nil 調整データが返されますstartContentEditingWithInput。それだけでなく、写真画像の編集前のバージョンも取得されるため、最後の編集前の外観から作業を進めることはできません。

于 2014-10-12T17:50:56.637 に答える