代码中怎么新建一个相簿?
转载自: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
代码中怎么新建一个相簿?相关推荐
- java异常在哪一层捕获_当在一个方法的代码中抛出一个检测异常时,该异常或被方法中的 ( )结构 捕获,或者在方法的 ( ) 中声明_学小易找答案...
[填空题]当异常已经被定义时,必须通过( ) 语句来处理它. [填空题]Catch 子句包含( )的程序段 [单选题]下列java语言的常用异常类中,属于检测异常的是() [单选题]自定义异常类时,可 ...
- Java中怎样新建一个list并给其赋值
场景 在Java中新建对象并赋值的方法一般是 int a = 1; String b="公众号:霸道的程序猿"; 即使是数组,在新建时并赋值 int[] x={1,2,3,4}; ...
- android中如何新建一个activity,《Android Activity》活动的介绍和创建
Activity 是什么 Android 有四大组件:Activity.Service.Broadcast Receiver 和 Content Provider. Activity,活动,即用来承载 ...
- dw选项卡代码_DW软件新建一个html网页
使用Dreamweaver(简称DW)软件新建一个html网页,dw新建一个标准的HTML超文本网页 前面DIVCSS5介绍过使用记事本来新建HTML网页,记事本弊端,编码容易出错导致网页乱码,接下来 ...
- linux中如何新建一个磁盘,如何在Linux操作系统中新建磁盘分区
判断虚拟机初始化磁盘的容量大小. 小于2TB时请执行步骤 2. 大于等于2TB时请执行步骤 21. 登录虚拟机,在操作系统桌面上单击右键,选择"打开终端",进入命令行界面. htt ...
- IDEA中如何新建一个带有-P目录的项目
IDEA如何新建一个如下图所示的目录结构的项目,具体的操作示意图如下所示: 只需在新建project时候在下面的module的设置里面进行如图所示的更改就可以了.module名字改为:emidas-a ...
- 标准输出缓存在多进程代码中引起的一个问题
这里先看两个例子: 1) 源码如下: #include <sys/types.h> #include <stdio.h> #include <stdlib.h> # ...
- c语言利用文件体写在桌面上,在C语言中怎样新建一个文件夹?
满意答案 JacinthLancet 推荐于 2017.10.12 采纳率:56% 等级:12 已帮助:35899人 函数名: mkdir 功 能: 建立一个目录(文件夹) 用 法: int m ...
- Python代码中执行另外一个.py文件
关于Python 脚本如何执行另一个脚本,可以使用os.system()来实现 https://blog.csdn.net/shenjin_s/article/details/79976954 简单粗 ...
最新文章
- linux配置oracle11G监听及本地网络服务 及 数据库建库
- WebSocket服务器和客户端的一对多通知实现
- 谈谈Runtime类中的freeMemory,totalMemory,maxMemory几个方法
- php 滑块 爬虫_PHP实现简易爬虫与简易采集程序
- Vue-cli 2在webpack内使用雪碧图(响应式)
- ASP.NET自定义服务器控件
- nexus4恢复原生系统_深度好文!新浪微博架构师详析微博云原生技术的思考与实践...
- 在Leangoo里怎么修改密码?
- 沫沫金:EasyUI 固定列
- cnm的下载频道,再c一次。
- java从入门到精通pdf第五版,满满干货指导
- C++ QT学习之路----VS2017+QT环境搭建
- 华为Datacom认证和Routing Switching认证并行多久?
- 始于情怀,终于品质----方寸微T630 USB3.0 替换 CYUSB3014
- 天翎低代码平台助力企业业务流程集成,为企业降本增效
- vivo社招面试流程,坐标南京
- 里氏代换原则——与多态的辩证关系
- js之清除Cookie
- 解决qcut报错ValueError: Bin labels must be one fewer than the number of bin edges
- 6 个接私活的网站,你有技术就有钱!