iOS中怎么存储照片到自定义相册 转载备份
原文地址:https://www.cnblogs.com/muzichenyu/p/6006856.html
在市场上主流App中,大多数App都具有存储图片到自己App的相册中.苹果提供的方法只能存储图片到系统相册,下面讲一下怎么实现:
实现思路:
1.对系统相册进行操作的前提必须导入#import <Photos/Photos.h>
2.在用户点击保存之后,首先判断用户是否允许App访问相册.若不是不可以,提醒用户需要打开权限.
3.进入用户相册之后,首先判断有没有改App储存图片的相册,有的话直接把图片存储进去,没有的话创建一个新的相册.
4.在图片存储到相册的时候用到占位图片.
具体实现:
// 1.获取用户授权状态,状态有四种
// 1) PHAuthorizationStatusNotDetermined 不确定
// 2) PHAuthorizationStatusRestricted, 家长控制,拒绝
// 3) PHAuthorizationStatusDenied, 拒绝
// 4) PHAuthorizationStatusAuthorized 授权
PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];
// 2.判断用户的授权状态
if (status == PHAuthorizationStatusNotDetermined) {
// 如果状态是不确定的话,block中的内容会等到授权完成再调用
[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
// 授权完成就会调用
if (status == PHAuthorizationStatusAuthorized) {
//调用存储图片的方法
[self savePhoto];
}
}];
//如果允许访问
} else if (status == PHAuthorizationStatusAuthorized) {
//调用存储图片的方法
[self savePhoto];
//如果权限是拒绝
} else {
// 使用第三方框架,弹出一个页面提示用户去打开授权
// [SVProgressHUD showInfoWithStatus:@"进入设置界面->找到当前应用->打开允许访问相册开关"];
}
#pragma mark - 该方法获取在图库中是否已经创建该App的相册
//该方法的作用,获取系统中所有的相册,进行遍历,若是已有相册,返回该相册,若是没有返回nil,参数为需要创建 的相册名称
- (PHAssetCollection *)fetchAssetColletion:(NSString *)albumTitle
{
// 获取所有的相册
PHFetchResult *result = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];
//遍历相册数组,是否已创建该相册
for (PHAssetCollection *assetCollection in result) {
if ([assetCollection.localizedTitle isEqualToString:albumTitle]) {
return assetCollection;
}
}
return nil;
}
#pragma mark - 保存图片的方法
- (void)savePhoto
{
//修改系统相册用PHPhotoLibrary单粒,调用performChanges,否则苹果会报错,并提醒你使用
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
// 调用判断是否已有该名称相册
PHAssetCollection *assetCollection = [self fetchAssetColletion:
@"百思"];
//创建一个操作图库的对象
PHAssetCollectionChangeRequest *assetCollectionChangeRequest;
if (assetCollection) {
// 已有相册
assetCollectionChangeRequest = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:assetCollection];
} else {
// 1.创建自定义相册
assetCollectionChangeRequest = [PHAssetCollectionChangeRequest creationRequestForAssetCollectionWithTitle:@"百思"];
}
// 2.保存你需要保存的图片到系统相册(这里保存的是_imageView上的图片)
PHAssetChangeRequest *assetChangeRequest = [PHAssetChangeRequest creationRequestForAssetFromImage:_imageView.image];
// 3.把创建好图片添加到自己相册
//这里使用了占位图片,为什么使用占位图片呢
//这个block是异步执行的,使用占位图片先为图片分配一个内存,等到有图片的时候,再对内存进行赋值
PHObjectPlaceholder *placeholder = [assetChangeRequest placeholderForCreatedAsset];
[assetCollectionChangeRequest addAssets:@[placeholder]];
} completionHandler:^(BOOL success, NSError * _Nullable error) {
//弹出一个界面提醒用户是否保存成功
if (error) {
//[SVProgressHUD showErrorWithStatus:@"保存失败"];
} else {
// [SVProgressHUD showSuccessWithStatus:@"保存成功"];
}
}];
}
iOS中怎么存储照片到自定义相册 转载备份相关推荐
- Android获取系统相册图片选中地址,获取手机中的所有图片地址自定义相册
一.获取手机中的值 1.首先在使用读写sd卡权限 2.获取手机中的所有图片: 注意代码中的getGalleryPhotos(getContentResolver()) 方法获取所有地址 获取所有图片地 ...
- 在iOS中为ViewController构建自定义过渡
总览 (Overview) Every new iOS comes with design changes. This time we saw the new View Presentation St ...
- iOS中视图控制器指定自定义UIView
他的好处就是在程序执行viewDIdLoad之前可以把我们需要用的数据加载完成.这也是减轻控制器的负担之一的办法.但是我个人觉得好是每有数据的延迟加载的功能牛.延迟加载只在数据需要的时候才被加载到视图 ...
- iOS中设置百度地图自定义标注图片,自定义泡泡
#pragma mark - BMKMapViewDelegate // 根据anntation生成对应的View - (BMKAnnotationView *)mapView:(BMKMapView ...
- iOS分段选择器、旅行App、标度尺、对对碰小游戏、自定义相册等源码
iOS精选源码 企业级开源项目,模仿艺龙旅行App 标签选择器--LeeTagView CSSegmentedControl常用的分段选择器,简单易用! 仿微信左滑删除 IOS左滑返回 输入框 iOS ...
- iOS拍照后存储照片到相册中
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDic ...
- iOS中,系统相册的那些事
写在前面 在手机APP日益增加的前提下,如何更好的提升用户的交互体验似乎成为衡量一个APP重要指标.上述的感悟源于实际工作的需求,就是在APP中添加一个更换用户头像的功能. 也许别人会认为这样一个小功 ...
- c语言保存图片image,iOS 保存图片到【自定义相册】
3.1.Photos 框架基本认识,我们可以在 Help->Developer Documentation-> 选择OC或者Swift 搜索 Photos Photos 框架检索 Phot ...
- ios 自定义字体_如何仅用几行代码在iOS应用中创建一致的自定义字体
ios 自定义字体 by Yuichi Fujiki 藤木雄一 In this article, you'll learn how to create a unified custom look th ...
最新文章
- python virtualenv用法
- 只能在栈上或者堆上创建对象
- java web项目在tomcat中以调试模式运行
- 算法导论-概率发生器
- mysql数据横表变成竖表_MySQL中横表和竖表相互转换
- java中的多线程的示例
- 微信小程序中处理 获取用户地址的回调
- 哪种消息队列更好_如何编写更好的错误消息
- Jmeter BeanShell使用json.jar包处理Json数据
- 双击硬盘盘符打不开文件的处理方法
- vi测试仪维修成功率高吗?_欧森杰检测仪:臭氧检测仪的六大特点,您真的了解吗?...
- Java项目——个人博客系统
- matlab根据脉冲计算转速,求不规则脉冲之前的时间间隔,进而求出电机转速
- 成绩录取系统c语言,一个学生成绩管系统C语言源代码.doc
- 图像表格实线和虚线检测
- 0045-量化第十天:QMT-以DMA指标为例调用系统指标
- 慕课静态页面制作周记
- libvirt live migration 流程
- HUSTOJ超级详细部署文档
- 下载文件、根据链接生成二维码