Ios 如果我在我的应用程序中删除一个图像,它也必须在库中删除(使用objective C)
我开发了一个具有所有基本功能的摄像头应用程序。拍照时,该图像将保存在新创建的文件夹中,但如果我在应用程序中删除图像,则不会删除该文件夹中的图像。我需要使用objective C永久删除它,你不能从gallery中删除某些内容,你可以在应用程序中使用gallery中的照片并保存到gallery,但iOS不会授予其他应用程序从gallery中删除某些内容的权限。(如果不是越狱)WhatsApp中也没有此类功能(或者我看不到) 适用于iOS 8.0+Ios 如果我在我的应用程序中删除一个图像,它也必须在库中删除(使用objective C),ios,objective-c,iphone,Ios,Objective C,Iphone,我开发了一个具有所有基本功能的摄像头应用程序。拍照时,该图像将保存在新创建的文件夹中,但如果我在应用程序中删除图像,则不会删除该文件夹中的图像。我需要使用objective C永久删除它,你不能从gallery中删除某些内容,你可以在应用程序中使用gallery中的照片并保存到gallery,但iOS不会授予其他应用程序从gallery中删除某些内容的权限。(如果不是越狱)WhatsApp中也没有此类功能(或者我看不到) 适用于iOS 8.0+ // Delete asset from libr
// Delete asset from library
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
[PHAssetChangeRequest deleteAssets:assetArray];
} completionHandler:completionHandler];
您只能删除应用程序使用文档API创建的ALAsset
[ALAsset-setImageData:metadata:completionBlock:
通过将图像photo.jpg
保存到库中
ALAssetsLibrary *lib = [ALAssetsLibrary new];
UIImage *image = [UIImage imageNamed:@"photo.jpg"];
[lib writeImageToSavedPhotosAlbum:image.CGImage metadata:@{} completionBlock:^(NSURL *assetURL, NSError *error) {
NSLog(@"Write image %@ to asset library. (Error %@)", assetURL, error);
}];
您可以在“保存的照片”相册中找到此内容。
删除:
ALAssetsLibrary *lib = [ALAssetsLibrary new];
[lib enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
[group enumerateAssetsUsingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stop) {
if(asset.isEditable) {
[asset setImageData:nil metadata:nil completionBlock:^(NSURL *assetURL, NSError *error) {
NSLog(@"Asset url %@ should be deleted. (Error %@)", assetURL, error);
}];
}
}];
} failureBlock:^(NSError *error) {
}];
ALAssetLibrary
自iOS 9.0以来已被弃用,您可以使用
PHPhotoLibrary
iOS 9.0+
// Delete asset from library
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
[PHAssetChangeRequest deleteAssets:assetArray];
} completionHandler:completionHandler];
在集合视图中,选择方法i获取所选图像的url
UIImage *viewImage = _myma; // --- mine was made from drawing context
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
// Request to save the image to camera roll
[library writeImageToSavedPhotosAlbum:[viewImage CGImage] orientation:(ALAssetOrientation)[viewImage imageOrientation] completionBlock:^(NSURL *assetURL, NSError *error){
if (error) {
NSLog(@"error");
} else {
NSLog(@"url %@", assetURL);
NSString *urlString = [assetURL absoluteString];
selectedurl = urlString;
//NSLog(@"myurl%@", selectedurl);
}
用于删除选定图像的“正在运行”按钮
NSURL *deleteurl = [NSURL URLWithString:selectedurl];
NSArray *arrDelete = [[NSArray alloc] initWithObjects:deleteurl , nil];
NSEnumerator *asset = [PHAsset fetchAssetsWithALAssetURLs:arrDelete options:nil];
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
[PHAssetChangeRequest deleteAssets:asset];// asset is an array
} completionHandler:^(BOOL success, NSError *error) {
NSLog(@"Finished Delete asset. %@", (success ? @"Success." : error));
if (success) {
NSLog(@"deleted");
}
}];
你能显示一些代码吗?使用照片框架检查这一个(使用照片框架):我有一个问题,关于这是这个代码删除相册中的图像只或从照片?删除的照片是否转到最近删除的照片?我很困惑这样的东西在iOS中是否是真的……我收到了这样一个错误“没有可见的@interface for PHPhotoLibrary声明选择器‘performchanges’”。您可以停止将图像保存到WhatsApp中的设备相册中,但一旦保存到相册中,就无法删除图像。同样可以在应用程序中实现。我们无法启动命令从应用程序中删除相册中的图像。感谢您提供此代码片段,它可能会提供一些即时帮助。一个恰当的解释将通过说明为什么这是一个很好的解决问题的方法来体现它的教育价值,并将使它对未来有类似但不完全相同问题的读者更有用。请编辑您的答案以添加解释,并说明适用的限制和假设。