Какой PHAssetCollection использовать для сохранения изображения?
В iOS 8. Photos.framework я пытаюсь сохранить UIImage в библиотеку фотографий пользователя, почти так же, как вы можете долго нажимать на изображение в Safari и выбирать "Сохранить изображение". В iOS 7 это было бы просто вызывать ALAssetLibrary's writeImageToSavedPhotosAlbum:metadata:completionBlock
,
Для iOS 8 нам нужно выбрать коллекцию ресурсов для добавления PHAsset, но я не могу понять, какая PHAssetCollection наиболее близка к простому сохранению в "ролике камеры" пользователя (хотя в 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);
}];
Я попытался получить доступ к смарт-альбому "Недавно добавленные", но он не позволяет добавлять в него новый контент.
2 ответа
Вам не нужно возиться с PHAssetCollection. Просто добавьте, выполнив:
[[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#>
}
}];
На самом деле в 8.1 Camera Roll вернулся. Это умный альбом, подтипом которого является SmartAlbumUserLibrary.