精华内容
下载资源
问答
  • iOS 删除相册照片

    千次阅读 2016-10-26 10:55:10
    IOS 7,8

    [摘要:去自:http://www.jianshu.com/p/ac18aa3f28c2 比来公司的app有一个新功效是正在app中删除相册的照片 ,原本是一个比拟简略天功效,正在做的过程当中却发明AssetsLibary 框架并出有提]

    来自:http://www.jianshu.com/p/ac18aa3f28c2

    最近公司的app有一个新功能是在app中删除相册的照片 ,本来是一个比较简单地功能,在做的过程中却发现AssetsLibary 框架并没有提供删除相册的API,网络上查找的时候这方面的信息也很少,最终在stackoverflow上发现了一个巧妙的方法,使用[ALAsset setImageData:metadata:completionBlock:]来实现删除照片的功能,可是也有人说这个API虽然能删除照片,但是它的主要功能不是用来删除照片,在iOS8的时候再只用它删除照片就无效了。好在iOS8中我们可以直接使用 PhotoKit框架来完成操作,PhotoKit中直接提供了 [PHAssetChangeRequest deleteAssets:@[Asset]]API来完成对照片的删除功能。接下来我们介绍一下这两个照片库框架如何删除照片。

    在以前的iOS App中中我们通常用AssetsLibary框架来完成对照片库的操作,但是随着iOS 系统的更新,苹果在相机和照片库上都发生了很大的改变,比如最新的iOS9系统中会有单独的自拍、屏幕快照相册,现在仅仅使用AssetsLibary并不能对照片库进行很好地支持。在iOS8中Apple提供了新的框架 PhotoKit,相比老旧的AssetsLibary,PhotoKit表现的更好,更能完成设备和照片库的无缝工作。但是在现在的苹果用户中,iOS7系统还是占有很大的比例,所以AssetsLibary仍然具有使用意义。

    AssetsLibary删除照片(用于iOS7)

    1.在相册中添加一张照片

        ALAssetsLibrary *lib = [[ALAssetsLibrary alloc]init];
        UIImage *image = [UIImage imageNamed:@"pet"];
        [lib writeImageToSavedPhotosAlbum:image.CGImage metadata:@{} completionBlock:^(NSURL *assetURL, NSError *error) { NSLog(@"Write image(%@) to album . Error:(%@)", assetURL, error); }];

    2.在相册中删除照片

        ALAssetsLibrary *lib = [[ALAssetsLibrary alloc]init];
        [lib enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
            [group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
                if (result.isEditable) { //在这里imageData 和 metaData设为nil,就可以将相册中的照片删除 [result setImageData:nil metadata:nil completionBlock:^(NSURL *assetURL, NSError *error) { NSLog(@"asset url(%@) should be delete . Error:%@ ", assetURL, error); }]; } }]; } failureBlock:^(NSError *error) { }];

    PhotoKit 删除照片(用于iOS8, iOS9)

    1.在相册中添加一张照片

        //首先获取相册的集合
        PHFetchResult *collectonResuts = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAny options:[PHFetchOptions new]] ;
        //对获取到集合进行遍历    
        [collectonResuts enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { PHAssetCollection *assetCollection = obj; //Camera Roll是我们写入照片的相册 if ([assetCollection.localizedTitle isEqualToString:@"Camera Roll"]) { [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{ //请求创建一个Asset PHAssetChangeRequest *assetRequest = [PHAssetChangeRequest creationRequestForAssetFromImage:[UIImage imageNamed:@"pet"]]; //请求编辑相册 PHAssetCollectionChangeRequest *collectonRequest = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:assetCollection]; //为Asset创建一个占位符,放到相册编辑请求中 PHObjectPlaceholder *placeHolder = [assetRequest placeholderForCreatedAsset ]; //相册中添加照片 [collectonRequest addAssets:@[placeHolder]]; } completionHandler:^(BOOL success, NSError *error) { NSLog(@"Error:%@", error); }]; } }];

    2.在相册中删除照片

        PHFetchResult *collectonResuts = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAny options:[PHFetchOptions new]] ;
        [collectonResuts enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
            PHAssetCollection *assetCollection = obj;
            if ([assetCollection.localizedTitle isEqualToString:@"Camera Roll"]) { PHFetchResult *assetResult = [PHAsset fetchAssetsInAssetCollection:assetCollection options:[PHFetchOptions new]]; [assetResult enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{ //获取相册的最后一张照片 if (idx == [assetResult count] - 1) { [PHAssetChangeRequest deleteAssets:@[obj]]; } } completionHandler:^(BOOL success, NSError *error) { NSLog(@"Error: %@", error); }]; }]; } }];
    展开全文
  • 之前小编有和大家分享过一篇关于从相册选取单张照片的文章,那么下面这篇文章跟大家分享下如何相册多图选择和删除,以及包括拍照功能,有需要的可以参考学习,下面来一起看看吧。
  • 最近公司的app有一个新功能是在app中删除相册照片 ,本来是一个比较简单地功能,在做的过程中却发现AssetsLibary 框架并没有提供删除相册的API,网络上查找的时候这方面的信息也很少,最终在stackoverflow上发现了...

    来自:http://www.jianshu.com/p/ac18aa3f28c2

    最近公司的app有一个新功能是在app中删除相册的照片 ,本来是一个比较简单地功能,在做的过程中却发现AssetsLibary 框架并没有提供删除相册的API,网络上查找的时候这方面的信息也很少,最终在stackoverflow上发现了一个巧妙的方法,使用[ALAsset setImageData:metadata:completionBlock:]来实现删除照片的功能,可是也有人说这个API虽然能删除照片,但是它的主要功能不是用来删除照片,在iOS8的时候再只用它删除照片就无效了。好在iOS8中我们可以直接使用 PhotoKit框架来完成操作,PhotoKit中直接提供了 [PHAssetChangeRequest deleteAssets:@[Asset]]API来完成对照片的删除功能。接下来我们介绍一下这两个照片库框架如何删除照片。

    在以前的iOS App中中我们通常用AssetsLibary框架来完成对照片库的操作,但是随着iOS 系统的更新,苹果在相机和照片库上都发生了很大的改变,比如最新的iOS9系统中会有单独的自拍、屏幕快照相册,现在仅仅使用AssetsLibary并不能对照片库进行很好地支持。在iOS8中Apple提供了新的框架 PhotoKit,相比老旧的AssetsLibary,PhotoKit表现的更好,更能完成设备和照片库的无缝工作。但是在现在的苹果用户中,iOS7系统还是占有很大的比例,所以AssetsLibary仍然具有使用意义。

    AssetsLibary删除照片(用于iOS7)

    1.在相册中添加一张照片

        ALAssetsLibrary *lib = [[ALAssetsLibrary alloc]init];
        UIImage *image = [UIImage imageNamed:@"pet"];
        [lib writeImageToSavedPhotosAlbum:image.CGImage metadata:@{} completionBlock:^(NSURL *assetURL, NSError *error) { NSLog(@"Write image(%@) to album . Error:(%@)", assetURL, error); }];

    2.在相册中删除照片

        ALAssetsLibrary *lib = [[ALAssetsLibrary alloc]init];
        [lib enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
            [group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
                if (result.isEditable) { //在这里imageData 和 metaData设为nil,就可以将相册中的照片删除 [result setImageData:nil metadata:nil completionBlock:^(NSURL *assetURL, NSError *error) { NSLog(@"asset url(%@) should be delete . Error:%@ ", assetURL, error); }]; } }]; } failureBlock:^(NSError *error) { }];

    PhotoKit 删除照片(用于iOS8, iOS9)

    1.在相册中添加一张照片

        //首先获取相册的集合
        PHFetchResult *collectonResuts = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAny options:[PHFetchOptions new]] ;
        //对获取到集合进行遍历    
        [collectonResuts enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { PHAssetCollection *assetCollection = obj; //Camera Roll是我们写入照片的相册 if ([assetCollection.localizedTitle isEqualToString:@"Camera Roll"]) { [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{ //请求创建一个Asset PHAssetChangeRequest *assetRequest = [PHAssetChangeRequest creationRequestForAssetFromImage:[UIImage imageNamed:@"pet"]]; //请求编辑相册 PHAssetCollectionChangeRequest *collectonRequest = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:assetCollection]; //为Asset创建一个占位符,放到相册编辑请求中 PHObjectPlaceholder *placeHolder = [assetRequest placeholderForCreatedAsset ]; //相册中添加照片 [collectonRequest addAssets:@[placeHolder]]; } completionHandler:^(BOOL success, NSError *error) { NSLog(@"Error:%@", error); }]; } }];

    2.在相册中删除照片

        PHFetchResult *collectonResuts = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAny options:[PHFetchOptions new]] ;
        [collectonResuts enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
            PHAssetCollection *assetCollection = obj;
            if ([assetCollection.localizedTitle isEqualToString:@"Camera Roll"]) { PHFetchResult *assetResult = [PHAsset fetchAssetsInAssetCollection:assetCollection options:[PHFetchOptions new]]; [assetResult enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{ //获取相册的最后一张照片 if (idx == [assetResult count] - 1) { [PHAssetChangeRequest deleteAssets:@[obj]]; } } completionHandler:^(BOOL success, NSError *error) { NSLog(@"Error: %@", error); }]; }]; } }];

     

    转载于:https://www.cnblogs.com/lushengcao/p/4978998.html

    展开全文
  • iOS-删除相册照片

    千次阅读 2018-11-28 14:07:59
    #import <Photos/Photos.h>    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(takeScreenSheetAction:) name:UIApplicationUserDidTakeScreenshotNotification ...

    #import <Photos/Photos.h> 

     

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(takeScreenSheetAction:) name:UIApplicationUserDidTakeScreenshotNotification object:nil];

     

    -(void)takeScreenSheetAction:(NSNotification *)notification{

     

        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

            PHFetchOptions *options = [[PHFetchOptions alloc] init];

            options.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]];

            PHFetchResult *assetsFetchResults = [PHAsset fetchAssetsWithOptions:options];

     

            PHAsset *asset = [assetsFetchResults firstObject];

            if (asset) {

                NSArray *delAssets = [[NSArray alloc] initWithObjects:asset, nil];

                [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{

                    [PHAssetChangeRequest deleteAssets:delAssets];

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

                    

                }];

            }

        });

    }

    展开全文
  • iOS相册中如何删除照片

    千次阅读 2016-07-26 17:45:44
    最近公司的app有一个新功能是在app中删除相册照片 ,本来是一个比较简单地功能,在做的过程中却发现AssetsLibary 框架并没有提供删除相册的API,网络上查找的时候这方面的信息也很少,最终在stackoverflow上发现了...

    iOS相册中如何删除照片

    最近公司的app有一个新功能是在app中删除相册的照片 ,本来是一个比较简单地功能,在做的过程中却发现AssetsLibary 框架并没有提供删除相册的API,网络上查找的时候这方面的信息也很少,最终在stackoverflow上发现了一个巧妙的方法,使用[ALAsset setImageData:metadata:completionBlock:]来实现删除照片的功能,可是也有人说这个API虽然能删除照片,但是它的主要功能不是用来删除照片,在iOS8的时候再只用它删除照片就无效了。好在iOS8中我们可以直接使用 PhotoKit框架来完成操作,PhotoKit中直接提供了 [PHAssetChangeRequest deleteAssets:@[Asset]]API来完成对照片的删除功能。接下来我们介绍一下这两个照片库框架如何删除照片。

    在以前的iOS App中中我们通常用AssetsLibary框架来完成对照片库的操作,但是随着iOS 系统的更新,苹果在相机和照片库上都发生了很大的改变,比如最新的iOS9系统中会有单独的自拍、屏幕快照相册,现在仅仅使用AssetsLibary并不能对照片库进行很好地支持。在iOS8中Apple提供了新的框架 PhotoKit,相比老旧的AssetsLibary,PhotoKit表现的更好,更能完成设备和照片库的无缝工作。但是在现在的苹果用户中,iOS7系统还是占有很大的比例,所以AssetsLibary仍然具有使用意义。

    AssetsLibary删除照片(用于iOS7)

    1.在相册中添加一张照片

        ALAssetsLibrary *lib = [[ALAssetsLibrary alloc]init];
        UIImage *image = [UIImage imageNamed:@"pet"];
        [lib writeImageToSavedPhotosAlbum:image.CGImage metadata:@{} completionBlock:^(NSURL *assetURL, NSError *error) {
            NSLog(@"Write image(%@) to album . Error:(%@)", assetURL, error);
        }];

    2.在相册中删除照片

        ALAssetsLibrary *lib = [[ALAssetsLibrary alloc]init];
        [lib enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
            [group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
                if (result.isEditable) {
                  //在这里imageData 和 metaData设为nil,就可以将相册中的照片删除
                    [result setImageData:nil metadata:nil completionBlock:^(NSURL *assetURL, NSError *error) {
                        NSLog(@"asset url(%@) should be delete . Error:%@ ", assetURL, error);
                    }];
                }
            }];
        } failureBlock:^(NSError *error) {
    
        }];

    PhotoKit 删除照片(用于iOS8, iOS9)

    1.在相册中添加一张照片

        //首先获取相册的集合
        PHFetchResult *collectonResuts = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAny options:[PHFetchOptions new]] ;
        //对获取到集合进行遍历    
        [collectonResuts enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
            PHAssetCollection *assetCollection = obj;
        //Camera Roll是我们写入照片的相册
        if ([assetCollection.localizedTitle isEqualToString:@"Camera Roll"])  {
                [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
          //请求创建一个Asset             
           PHAssetChangeRequest *assetRequest = [PHAssetChangeRequest creationRequestForAssetFromImage:[UIImage imageNamed:@"pet"]];
          //请求编辑相册              
           PHAssetCollectionChangeRequest *collectonRequest = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:assetCollection];
          //为Asset创建一个占位符,放到相册编辑请求中
           PHObjectPlaceholder *placeHolder = [assetRequest placeholderForCreatedAsset ];
          //相册中添加照片
                    [collectonRequest addAssets:@[placeHolder]];
                } completionHandler:^(BOOL success, NSError *error) {
                    NSLog(@"Error:%@", error);
                }];
           }
          }];

    2.在相册中删除照片

        PHFetchResult *collectonResuts = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAny options:[PHFetchOptions new]] ;
        [collectonResuts enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
            PHAssetCollection *assetCollection = obj;
            if ([assetCollection.localizedTitle isEqualToString:@"Camera Roll"])  {
                PHFetchResult *assetResult = [PHAsset fetchAssetsInAssetCollection:assetCollection options:[PHFetchOptions new]];
                [assetResult enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
                   [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
                       //获取相册的最后一张照片
                       if (idx == [assetResult count] - 1) {
                           [PHAssetChangeRequest deleteAssets:@[obj]];
                       }
                   } completionHandler:^(BOOL success, NSError *error) {
                       NSLog(@"Error: %@", error);
                   }];
                }];
            }
        }];
    展开全文
  • 之前有写过从相册选取单张照片,有网友留言问多图选择怎么做,本次就先更新这个吧先上效果图照片多选1.gif本次用的第三方框架做这个,但是需要考虑的地方也比较多,怎么把拍照和相册选取结合、删除照片后添加新照片...
  • 问题一:有人反映打开本演示的时候第一次打不开相册,必须重新启动一下才可以打开。 此问题是由于初始化ZYQAssetPickerController懒加载造成的,在使用的时候不使用懒加载创建就可以解决 问题二:本地化图片 在...
  • [iOS]删除相册图片

    2017-05-25 15:48:59
    //获取相册的最后一张照片 if (idx == [assetResult count] - 1) { [PHAssetChangeRequest deleteAssets:@[obj]] ; } } completionHandler:^(BOOL success, NSError * error ) { NSLog(@ "Error: %@" , error...
  • 照例先上效果图本次用的第三方框架做这个,但是需要考虑的地方也比较多,怎么把拍照和相册选取结合、删除照片后添加新照片时候的相册状态等等,所有的改变都是在操作数组。还需考虑图片的压缩上传。本次用的第三方...
  • iOS相机相册

    2015-08-07 14:24:27
    iOS调用手机中的图片,多图片选择删除,调用摄像头,相机功能
  • iOS APP删除系统相册中选中的图片 ...app有一个新功能是在app中删除相册照片。 8之前还是AssetsLibary处理 iOS 8+通过Photos.framework #import &lt;Photos/Photos.h&gt;  1.添加图片 /...
  • 1 打开相机:直接打开,通过...2 打开相册:1)、打开系统预设的相册风格(可使用代理传递选择的照片) 2)、自定义一个相册(样式、打开的是哪个相册、多选等等,这种方法需要自己设置方法传递选择照片,我用的通知)
  • 使用collectionView实现添加删除相册或拍照图片的效果,并且可以点击查看添加的图片,可以放大查看的图片
  • iOS 自定义相册

    2017-07-24 16:32:38
    One 将图片保存到系统的相册中Two AssetsLibrary/AssetsLibrary.h>苹果原生框架Three iOS8推出的Photos/Photos.h> 一共有两种方法自定义相册 第一种是iOS9之后过期的 AssetsLibrary/AssetsLibrary.h>苹果原生框架...
  • ios监测相册变化

    千次阅读 2016-08-03 15:37:48
    ios监测相册变化
  • iOS 保存相册

    千次阅读 2018-02-27 16:38:30
    使用UIImageWriteToSavedPhotosAlbum函数将图片保存到相册,如: - (void)loadImageFinished:(UIImage *)image { UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:...
  • 因为iOS系统相册权限及照片显示的问题,所以没法像android一样直接在某个路径下...iOS实现存储照片到自定义相册,其实是先把图片存到系统相册,然后创建一个相薄,在从系统相册中取出那张照片添加到自定义的相薄中。
  • app有一个新功能是在app中删除相册照片。 8之前还是AssetsLibary处理 iOS 8+通过Photos.framework #import 1.添加图片 //首先获取相册的集合   PHFetchResult *collectonResuts = ...
  • 支持多选,网络图片和本地图片,支持多选删除,支付图片单击放大缩小。
  • 相册多图选择,可删除(基于ZLPhotoBrowser) ,可自定义每行图片数量,以及最多可选数量,第一次上传DEMO 有不足的地方请提出来,交流。
  • iOS开发--删除本地相册照片

    千次阅读 2014-12-30 19:30:02
     iOS 8.0以上才支持删除本地照片,8.0版本以下只支持删除app自身创建的照片。使用之前,请导入Photos.framework。 如果要兼容8.0以下的系统,代码则要这么写: Class PHPhotoLibrary_Class = ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,192
精华内容 1,676
关键字:

ios删除相册图片