ios - ¿Qué PHAssetCollection utilizar para guardar una imagen?
objective-c ios8 (2)
En Photos.framework de iOS 8, estoy tratando de guardar un UIImage en la biblioteca de fotos del usuario, de la misma manera que puedes presionar una imagen durante un largo tiempo en Safari y elegir "Guardar imagen". En iOS 7, esto sería simplemente llamando ALAssetLibrary''s writeImageToSavedPhotosAlbum:metadata:completionBlock
.
Para iOS 8, debemos elegir una colección de activos para agregar un conjunto de PHA, pero no puedo averiguar qué PHAssetCollection es el más cercano a simplemente guardar en el "rollo de cámara" del usuario (aunque realmente no hay uno en iOS 8)
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
PHAssetChangeRequest *newAssetRequest = [PHAssetChangeRequest creationRequestForAssetFromImage:image];
newAssetRequest.creationDate = time;
newAssetRequest.location = location;
PHObjectPlaceholder *placeholderAsset = newAssetRequest.placeholderForCreatedAsset;
PHAssetCollectionChangeRequest *addAssetRequest = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:WHICH_ASSET_COLLECTION];
addAssetRequest addAssets:@[placeholderAsset];
} completionHandler:^(BOOL success, NSError *error) {
NSLog(@"Success: %d", success);
}];
Intenté acceder al álbum inteligente "Agregado recientemente", pero no permite agregarle contenido nuevo.
De hecho, en 8.1 el rollo de la cámara está de vuelta. Es el álbum inteligente cuyo subtipo es SmartAlbumUserLibrary.
No es necesario perder el tiempo con PHAssetCollection. Solo agrégalo haciendo:
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
PHAssetChangeRequest *changeRequest = [PHAssetChangeRequest creationRequestForAssetFromImage:<#your photo here#>];
} completionHandler:^(BOOL success, NSError *error) {
if (success) {
<#your completion code here#>
}
else {
<#figure out what went wrong#>
}
}];