2015-10-01 4 views
8

Ich übergebe gespeicherte Bild- und Videodateien an: PHLivePhoto.requestLivePhotoWithResourceFileURLs und bekomme ein PHLivePhoto Objekt, das ich in PHLivePhotoView anzeigen kann. Aber ich wundere mich, sobald ich eine PHLivePhoto habe gibt es eine Möglichkeit, es in der Fotobibliothek zu speichern?Gibt es eine Möglichkeit, ein Live-Foto in der Fotobibliothek zu speichern?

+0

ich genau dasselbe Frage mich. Die Dokumentation sagt "Um stattdessen ein Live-Foto in die Fotos-Bibliothek zu importieren, verwenden Sie die PHAssetCreationRequest-Klasse." Die creationRequestForAsset-Methode scheint jedoch kein PHLivePhoto zu benötigen. https://developer.apple.com/library/prerelease/ios/documentation/Photos/Reference/PHAssetCreationRequest_Class/index.html#//apple_ref/occ/clm/PHAssetCreationRequest/creationRequestForAsset – Landon

Antwort

13
NSURL *photoURL = ...; 
    NSURL *videoURL = ...; 

    [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{ 
      PHAssetCreationRequest *request = [PHAssetCreationRequest creationRequestForAsset]; 


      //These types should be inferred from your files 

      //PHAssetResourceCreationOptions *photoOptions = [[PHAssetResourceCreationOptions alloc] init]; 
      //photoOptions.uniformTypeIdentifier = @"public.jpeg"; 

      //PHAssetResourceCreationOptions *videoOptions = [[PHAssetResourceCreationOptions alloc] init]; 
      //videoOptions.uniformTypeIdentifier = @"com.apple.quicktime-movie"; 

      [request addResourceWithType:PHAssetResourceTypePhoto fileURL:photoURL options:nil /*photoOptions*/]; 
      [request addResourceWithType:PHAssetResourceTypePairedVideo fileURL:videoURL options:nil /*videoOptions*/]; 

     } completionHandler:^(BOOL success, NSError * _Nullable error) { 
      NSLog(@"success? %d, error: %@",success,error); 
     }]; 
+0

Super! Letzte Nacht, als ich versuchte, das zum Laufen zu bringen, stand ich auf addResourceWithType und erwartete dort PHAssetResourceTypeLivePhoto. Wenn nicht, habe ich gedacht, dass ich etwas verpasst habe. Ich habe den Abschnitt "pairedvideo type" vollständig überdeckt ... – Landon

5

Swift 3:

PHPhotoLibrary.shared().performChanges({ 

     let request = PHAssetCreationRequest.forAsset() 

     request.addResource(with: .photo, fileURL: photoURL, options: nil) 
     request.addResource(with: .pairedVideo, fileURL: videoURL, options: nil) 

    }) { (success, error) in 

     print(success) 
     print(error?.localizedDescription ?? "error") 
    } 
+0

Es ist auch möglich, Ressourcen mit Daten anstelle einer Datei hinzuzufügen. Auch der "Druck (Fehler") wird immer etwas drucken, auch wenn es funktioniert. Danke für dieses Beispiel. –

Verwandte Themen