使用系统相册、拍照、iCloud功能

1、添加权限:

相机权限 Privacy - Camera Usage Description App想要访问您手机的系统相机,是否允许?
相册权限 Privacy - Photo Library Additions Usage Description App想要访问您手机的相册,是否允许?

2、系统库头文件

#import <Photos/Photos.h>

3、点击按钮,弹出选择弹窗

- (void)inavBtnClicked:(UIButton*)btn
{__weak typeof(self)weakSelf = self;UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"上传" message:@"" preferredStyle:UIAlertControllerStyleActionSheet];UIAlertAction *action = [UIAlertAction actionWithTitle:@"相册" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {__strong typeof(self)strongSelf = self;[strongSelf openPhotosAlbum];}];UIAlertAction *action1 = [UIAlertAction actionWithTitle:@"拍照" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {__strong typeof(self)strongSelf = self;[strongSelf openCamera];}];UIAlertAction *action2 = [UIAlertAction actionWithTitle:@"iCloud" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {__strong typeof(self)strongSelf = self;[strongSelf openICloud];}];[alert addAction:action];[alert addAction:action1];[alert addAction:action2];[weakSelf presentViewController:alert animated:YES completion:^{}];
}

如图:

4、实现相关方法

- (void)openPhotosAlbum {UIImagePickerController *picker = [[UIImagePickerController alloc] init];//如果需要编辑图片,建议sourceType选择UIImagePickerControllerSourceTypeSavedPhotosAlbum,如果不需要,可选择UIImagePickerControllerSourceTypePhotoLibrary。picker.allowsEditing = YES;picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;picker.delegate = self;[self presentViewController:picker animated:YES completion:nil];
}
- (void)openCamera {UIImagePickerController *picker = [[UIImagePickerController alloc] init];picker.allowsEditing = YES;picker.sourceType = UIImagePickerControllerSourceTypeCamera;picker.delegate = self;[self presentViewController:picker animated:YES completion:nil];
}
- (void)openICloud {if (![ViewController ICloudEnable]) {NSLog(@"iCloud没有开启");return;}NSArray *documentTypes = @[@"public.content",@"public.text",@"public.source-code",@"public.image",@"public.jpeg",@"public.png",@"com.adobe.pdf",@"com.apple.keynote.key",@"com.microsoft.word.doc",@"com.microsoft.excel.xls",@"com.microsoft.powerpoint.ppt"];UIDocumentPickerViewController *picker = [[UIDocumentPickerViewController alloc] initWithDocumentTypes:documentTypes inMode:UIDocumentPickerModeOpen];picker.delegate = self;[self presentViewController:picker animated:YES completion:nil];
}
//判断iCloud是否可用
+ (BOOL)ICloudEnable {NSURL *url = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];return url != nil;
}

5、代理

#pragma mark - UIImagePickerControllerDelegate
//selected
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{//此处需要先dismiss掉picker,然后再present出alert,佛否则alert显示会出bug[picker dismissViewControllerAnimated:YES completion:nil];//获取经过编辑后的图片UIImage *image = info[UIImagePickerControllerEditedImage];if (!image) {//如果未编辑,取原图image = info[UIImagePickerControllerOriginalImage];}if (picker.sourceType == UIImagePickerControllerSourceTypeSavedPhotosAlbum){NSURL *url = nil;if (@available(iOS 11.0, *)) {url = info[UIImagePickerControllerImageURL];} else {url = info[UIImagePickerControllerReferenceURL];}}else if (picker.sourceType == UIImagePickerControllerSourceTypeCamera){__block NSString *locolId = nil;[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{//保存到相册PHAssetChangeRequest *request = [PHAssetChangeRequest creationRequestForAssetFromImage:image];locolId = request.placeholderForCreatedAsset.localIdentifier;} completionHandler:^(BOOL success, NSError * _Nullable error) {if (error == nil) {//获取图片信息PHFetchResult *result = [PHAsset fetchAssetsWithLocalIdentifiers:@[locolId] options:nil];PHAsset *asset = [result firstObject];[[PHImageManager defaultManager] requestImageDataForAsset:asset options:nil resultHandler:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info) {//NSURL *url = info[@"PHImageFileURLKey"];}];}else {NSLog(@"图片保存失败!");}}];}
}
//cancel
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {[picker dismissViewControllerAnimated:YES completion:nil];
}#pragma mark - UIDocumentPickerDelegate
- (void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentsAtURLs:(NSArray <NSURL *>*)urls
{}
- (void)documentPickerWasCancelled:(UIDocumentPickerViewController *)controller
{[controller dismissViewControllerAnimated:YES completion:nil];
}
- (void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentAtURL:(NSURL *)url
{}

PHPhotoLibrary提供了拍照保存到相册等功能。

iOS相册、拍照、iCloud使用相关推荐

  1. iOS - 选取相册中iCloud云上图片和视频的处理

    关于iOS选取相册中iCloud云上图片和视频 推荐看: TZImagePickerController的源码,这个是一个非常靠谱的相册选择图片视频的库 .当然也可以自己写 如下遇到的问题 工作原因, ...

  2. iOS 调用系统相册拍照时显示英文问题

    在调用系统相册拍照的时候,在选择照片的时候,发现用的都是英文,效果如下: 我们想把那个Retake 和Use Photo 改为对应的汉字,先来一种最笨的方法,最后在来个高级的方法,最笨的办法当然是我们 ...

  3. iOS 相册和网络图片的存取

    iOS 相册和网络图片的存取 保存 UIImage 到相册 UIKit UIKit 中一个古老的方法,Objective-C 的形式 void UIImageWriteToSavedPhotosAlb ...

  4. iOS相册、相机、通讯录权限获取

    iOS相册.相机.通讯录权限获取 说明 这是本人写的一个工具,用以便利的处理各种权限获取的操作,目前提供相册.照相机.通讯录的权限获取操作,参考了 http://www.jianshu.com/p/a ...

  5. iOS设置拍照retake和use按钮为中文简体

    iOS设置拍照retake和use按钮为中文简体,设置有两种方式一个是代码直接控制,第二就是xcode配置本机国际化为"china"(简体中文). 本文重点要说的是第二种,这样配置 ...

  6. android头像相册/拍照选取,裁剪及上传综合案例

    在android项目中,很多情况下上传头像的需求,像qq,新浪微博,微信,飞信等很多应用都有这样的功能. 之前我写过的两篇文章:andorid下从相册选取/拍照选取一张相片并剪切和android下Bi ...

  7. input调起ios摄像头拍照旋转问题解决思路

    背景 input标签调起ios原生摄像头拍照时,上传照片发现照片向左旋转了90度 旋转的原因: 手机拍照会给图片添加一个Orientaion信息(即拍照方向),如下: 用ios手机拍照,系统会给图片加 ...

  8. HTML精仿ios相册,高仿ios相册地图功能

    本篇文章已授权微信公众号 guolin_blog (郭霖) 独家发布 老规矩先上图, 高仿 ios 相册, 地图算法分析. 下载.gif 百度地图 SDK 新增点聚合功能.通过该功能,可通过缩小地图层 ...

  9. iOS 相机拍照声音消失方法

    iOS 相机拍照声音消失方法 通过在拍照的时候播放一个同拍照音频文件的一个反向音频,是两个音频的声波中和,从而达到无声具体如下: static SystemSoundID soundID = 0; i ...

  10. 调用手机相册拍照裁剪并将照片变为圆形显示

    本文只写将图片变为圆形显示的处理方法,至于如何调用手机相机和相册拍照裁剪,请看下一篇文章 首先是一个util工具类 ,将此方法放util里面 直接调用 util类: public class Phot ...

最新文章

  1. php打印warning日志引发的core追查
  2. REVERSE-PRACTICE-CTFSHOW-1
  3. 我的webpack配置文件
  4. 用java输出图形_java基础-输出一个简单的图形。
  5. html5简介、选项输入框、表单元素分组、input新增属性及属性值
  6. 03MyBatis动态sql
  7. SAP License:未分配差异新解
  8. linux中公钥和私钥的区别以及关系
  9. [转]Java杂谈(六)
  10. SEO优化与网站浏览量提升
  11. 儿时的小游戏:象狮虎豹狼狗猫鼠
  12. C语言中求和、计算平均值、方差和标准差
  13. Ubuntu布置Django项目
  14. 各种Lisp系语言大检阅
  15. Java 开发工程师的核心竞争力
  16. 家居产品HTML5,内容二 - html5高档家居网站模板
  17. java投票_java做投票系统
  18. Cisco Catalyst 8000 边缘平台系列(路由器)虚拟化软件下载
  19. 谷歌浏览器——删不掉的cookie!
  20. Python基础第十三节—面向对象(中)

热门文章

  1. 计算机颜色显示器,电脑显示器怎么选,看这一篇就够了
  2. android8.0 桌面图标适配
  3. HTML入门网页制作,HTML+css运用做出
  4. 微信小程序开发学习记录(一):直播功能
  5. JAVA实习生面试问题
  6. 中科院1区JGG微生物专刊征稿
  7. 英语单词记忆 词源法-思维导图 序
  8. SAP RETAIL 自动补货WRP1R事务代码报错 - Forecast values for determining target stock do not exist -
  9. Github连接不上怎么办?
  10. Python 语言发展历史