转载自:http://www.cocoachina.com/bbs/read.php?tid=143383

我的创建相册代码:

- (void)saveToAlbumWithMetadata:(NSDictionary*)metadataimageData:(NSData*)imageDatacustomAlbumName:(NSString*)customAlbumNamecompletionBlock:(void(^)(void))completionBlockfailureBlock:(void(^)(NSError*error))failureBlock
{ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init];    //接下来是疯狂的 blockvoid(^AddAsset)(ALAssetsLibrary *, NSURL*) = ^(ALAssetsLibrary *assetsLibrary, NSURL*assetURL) {//1 遍历 AssetsLibrary 整个相册库[assetsLibrary assetForURL:assetURL resultBlock:^(ALAsset *asset) {       //2 遍历 ALAssetsGroup 相册库中文件夹[assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL*stop) {                //3 找到 customAlbumName 对应的相册库文件夹if([[group valueForProperty:ALAssetsGroupPropertyName] isEqualToString:customAlbumName]) {[group addAsset:asset];if(completionBlock) {completionBlock();}}} failureBlock:^(NSError*error) {if(failureBlock) {failureBlock(error);}}];} failureBlock:^(NSError*error) {if(failureBlock) {failureBlock(error);}}];};

    //把照片写入相册[assetsLibrary writeImageDataToSavedPhotosAlbum:imageData metadata:metadata completionBlock:^(NSURL*assetURL, NSError*error) {if(customAlbumName) {[assetsLibrary addAssetsGroupAlbumWithName:customAlbumName resultBlock:^(ALAssetsGroup *group) {if(group) {[assetsLibrary assetForURL:assetURL resultBlock:^(ALAsset *asset) {[group addAsset:asset];if(completionBlock) {completionBlock();}} failureBlock:^(NSError*error) {if(failureBlock) {failureBlock(error);}}];}else{AddAsset(assetsLibrary, assetURL);}} failureBlock:^(NSError*error) {AddAsset(assetsLibrary, assetURL);}];}else{if(completionBlock) {completionBlock();}}}];}- (void)saveImage:(UIImage*)image{ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init];NSMutableArray*groups=[[NSMutableArrayalloc]init];ALAssetsLibraryGroupsEnumerationResultsBlock listGroupBlock = ^(ALAssetsGroup *group, BOOL*stop){if(group){[groups addObject:group];}else{BOOLhaveHDRGroup = NO;for(ALAssetsGroup *gp in groups){NSString*name =[gp valueForProperty:ALAssetsGroupPropertyName];if([name isEqualToString:@"Flickr墙纸"]){haveHDRGroup = YES;}}if(!haveHDRGroup){//do add a group named "HDR"[assetsLibrary addAssetsGroupAlbumWithName:@"Flickr墙纸"resultBlock:^(ALAssetsGroup *group){[groups addObject:group];}failureBlock:nil];haveHDRGroup = YES;}}};//创建相簿
    [assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupAlbum usingBlock:listGroupBlock failureBlock:nil];

//在我的"扫一扫"代码中,生成的二维码图片存到新创建的相薄后显示全黑,后同事指点原来是下边红色方法的问题,后换了个方法实现了:
UIImageJPEGRepresentation(image,1)[self saveToAlbumWithMetadata:nilimageData:UIImagePNGRepresentation(image) customAlbumName:@"Flickr墙纸"completionBlock:^{UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"保存成功"message:@"若想马上启用该墙纸,请进入图库找到该墙纸并设置为墙纸即可,感谢您的使用。"delegate:nilcancelButtonTitle:@"好"otherButtonTitles: nil];[alert show];} failureBlock:^(NSError*error){UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"保存失败"message:error.description delegate:nilcancelButtonTitle:@"知道了"otherButtonTitles: nil];[alert show];//面这个方法可判断是否是因为用户拒绝访问地址所致,如果是中文环境返回 的是“用户拒绝访问”
if (([myerror.localizedDescription rangeOfString:@"User denied access"].location!=NSNotFound )|| ([myerror.localizedDescription rangeOfString:@"用户拒绝访问"].location!=NSNotFound))}];}

转载于:https://www.cnblogs.com/allanliu/p/4184791.html

代码中怎么新建一个相簿?相关推荐

  1. java异常在哪一层捕获_当在一个方法的代码中抛出一个检测异常时,该异常或被方法中的 ( )结构 捕获,或者在方法的 ( ) 中声明_学小易找答案...

    [填空题]当异常已经被定义时,必须通过( ) 语句来处理它. [填空题]Catch 子句包含( )的程序段 [单选题]下列java语言的常用异常类中,属于检测异常的是() [单选题]自定义异常类时,可 ...

  2. Java中怎样新建一个list并给其赋值

    场景 在Java中新建对象并赋值的方法一般是 int a = 1; String b="公众号:霸道的程序猿"; 即使是数组,在新建时并赋值 int[] x={1,2,3,4}; ...

  3. android中如何新建一个activity,《Android Activity》活动的介绍和创建

    Activity 是什么 Android 有四大组件:Activity.Service.Broadcast Receiver 和 Content Provider. Activity,活动,即用来承载 ...

  4. dw选项卡代码_DW软件新建一个html网页

    使用Dreamweaver(简称DW)软件新建一个html网页,dw新建一个标准的HTML超文本网页 前面DIVCSS5介绍过使用记事本来新建HTML网页,记事本弊端,编码容易出错导致网页乱码,接下来 ...

  5. linux中如何新建一个磁盘,如何在Linux操作系统中新建磁盘分区

    判断虚拟机初始化磁盘的容量大小. 小于2TB时请执行步骤 2. 大于等于2TB时请执行步骤 21. 登录虚拟机,在操作系统桌面上单击右键,选择"打开终端",进入命令行界面. htt ...

  6. IDEA中如何新建一个带有-P目录的项目

    IDEA如何新建一个如下图所示的目录结构的项目,具体的操作示意图如下所示: 只需在新建project时候在下面的module的设置里面进行如图所示的更改就可以了.module名字改为:emidas-a ...

  7. 标准输出缓存在多进程代码中引起的一个问题

    这里先看两个例子: 1) 源码如下: #include <sys/types.h> #include <stdio.h> #include <stdlib.h> # ...

  8. c语言利用文件体写在桌面上,在C语言中怎样新建一个文件夹?

    满意答案 JacinthLancet 推荐于 2017.10.12 采纳率:56%    等级:12 已帮助:35899人 函数名: mkdir 功 能: 建立一个目录(文件夹) 用 法: int m ...

  9. Python代码中执行另外一个.py文件

    关于Python 脚本如何执行另一个脚本,可以使用os.system()来实现 https://blog.csdn.net/shenjin_s/article/details/79976954 简单粗 ...

最新文章

  1. linux配置oracle11G监听及本地网络服务 及 数据库建库
  2. WebSocket服务器和客户端的一对多通知实现
  3. 谈谈Runtime类中的freeMemory,totalMemory,maxMemory几个方法
  4. php 滑块 爬虫_PHP实现简易爬虫与简易采集程序
  5. Vue-cli 2在webpack内使用雪碧图(响应式)
  6. ASP.NET自定义服务器控件
  7. nexus4恢复原生系统_深度好文!新浪微博架构师详析微博云原生技术的思考与实践...
  8. 在Leangoo里怎么修改密码?
  9. 沫沫金:EasyUI 固定列
  10. cnm的下载频道,再c一次。
  11. java从入门到精通pdf第五版,满满干货指导
  12. C++ QT学习之路----VS2017+QT环境搭建
  13. 华为Datacom认证和Routing Switching认证并行多久?
  14. 始于情怀,终于品质----方寸微T630 USB3.0 替换 CYUSB3014
  15. 天翎低代码平台助力企业业务流程集成,为企业降本增效
  16. vivo社招面试流程,坐标南京
  17. 里氏代换原则——与多态的辩证关系
  18. js之清除Cookie
  19. 解决qcut报错ValueError: Bin labels must be one fewer than the number of bin edges
  20. 6 个接私活的网站,你有技术就有钱!

热门文章

  1. 慕和副总裁隋成钢:手游大作《魔卡幻想》为何移植HTML5
  2. 管理之困:居高不下的流动率
  3. 给你一个支点你能做些什么呢
  4. 浅谈win10TH2更新
  5. Linux 中出现的 -bash: syntax error near unexpected token `newline'问题解决
  6. 四足机器人:小而美的地面无人平台「AI产品/工程落地」
  7. 第三方检验检测机构实验室人员能力评价如何进行?
  8. 投诉建议html界面,我的投诉.html
  9. 中国企业服务市场的四股力量
  10. 在ns2.35下完成柯老师lab18实验