2016-05-02 2 views
1

Я использую UIImagePickerController в моем приложении, чтобы получить изображение. Мне нужно удалить это изображение синхронно из iOS PhotoLibrary после его загрузки в моем приложении.Как удалить изображение из библиотеки фотографий с помощью UIImagePickerController

- (BOOL)createAndInsertNewElementFromDictionary:(NSDictionary*)dict 
{ 
AlbumElement *newElement; 

if ([dict[UIImagePickerControllerMediaType] 
    isEqualToString:(NSString*)kUTTypeMovie]) 
{ 
    NSURL *mediaUrl = dict[UIImagePickerControllerMediaURL]; 
    newElement = [AlbumElement createElementWithMediaUrl:mediaUrl 
               inAlbum:_album.name]; 

} 
else if ([dict[UIImagePickerControllerMediaType] 
      isEqualToString:(NSString*)kUTTypeImage]) 
{ 
    UIImage *image = [dict[UIImagePickerControllerOriginalImage] copy]; 
    newElement = [AlbumElement createElementWithImage:image 
               inAlbum:_album.name]; 
} 

if (newElement != nil) 
{ 
    [_album.elements insertObject:newElement atIndex:0]; 

    UIImage *icon = [UIImage imageWithContentsOfFile:[newElement iconFullPath]]; 
    [AlbumElement writeImageToFileWithImage:icon 
           atFullPath:_album.albumIconPath]; 
} 
else 
{ 
    NSLog(@"Element was NOT added!"); 
    return NO; 
} 

return YES; 
} 

ответ

3
NSURL *url = [dict objectForKey:@"UIImagePickerControllerReferenceURL"] ; 

PHPhotoLibrary *library = [PHPhotoLibrary sharedPhotoLibrary]; 
[library performChanges:^{ 
// Here assetsURLs is array of url's you want to delete 
    PHFetchResult *assetsToBeDeleted = [PHAsset fetchAssetsWithALAssetURLs:[NSArray arrayWithObject:url] options:nil]; 
    [PHAssetChangeRequest deleteAssets:assetsToBeDeleted]; 
} completionHandler:^(BOOL success, NSError *error) 
{ 
    // Check error and success here 
}]; 
+0

Привет, спасибо, он отлично работает для меня. Но он показывает сообщение при удалении фотографии. Как изменить это сообщение. – PPreeti

+0

Это сообщение подтверждения. По умолчанию из яблока в этом подходе вы не можете скрыть это. Я поделюсь, если найду другой подход. Для получения дополнительной информации проверьте эту ссылку http://stackoverflow.com/questions/31922796/disable-confirmation-on-delete-request-in-phphotolibrary –

+0

Можно ли выбрать несколько изображений из библиотеки фотографий. – PPreeti

0

Вы можете сделать что-то вроде этого,

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{ 


NSURL *imgURL = info[UIImagePickerControllerReferenceURL]; 

[[PHPhotoLibrary sharedPhotoLibrary]performChanges:^{ 


    PHAsset *imageAssetTodelete = [PHAsset fetchAssetsWithALAssetURLs:imgURL options:nil]; 

    [PHAssetChangeRequest deleteAssets:imageAssetTodelete]; 


} completionHandler:^(BOOL success, NSError * _Nullable error) { 

    if (error) { 

     NSLog(@"err description : %@",[error localizedDescription]); 
    } 
    if (success) { 

     NSLog(@"image deleted successfully"); 
    } 


}]; 

} 

И не забудьте @import Photos; в своем классе.

Надеюсь, это поможет :)

Смежные вопросы