简单的修改项目中的头像
1. 获取手机相册和相机权限
- 在info.plist里面添加 Privacy - Photo Library Usage Description, 允许访问手机相册
- 在info.plist里面添加 Privacy - Camera Usage Description, 允许访问照相机
2. 遵守两个协议 UINavigationControllerDelegate, UIImagePickerControllerDelegate
遵守协议后实现代理方法,可以对选中图片进行操作
3. 给头像控件添加手势,这里注意设置 userInteractionEnabled 为 YES ,否则手势无效。
self.headImageView.userInteractionEnabled = YES;UITapGestureRecognizer *gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(changeHeadImage)];[self.headImageView addGestureRecognizer:gesture];
4. 实现手势的方法,弹出 AlertController,选择接下来的操作
- (void)changeHeadImage {UIAlertController *alert = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];[alert addAction:[UIAlertAction actionWithTitle:@"从手机相册选择" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {// 从手机相册选择图片的操作,见下文步骤5}]];[alert addAction:[UIAlertAction actionWithTitle:@"拍照" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { // 拍照操作,见下文下文步骤5 }]];[alert addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil]];[self presentViewController:alert animated:YES completion:nil];
}
5. 从手机相册选择图片和拍照的操作
// sourceType是一个枚举,有三种类型,设置为 UIImagePickerControllerSourceTypeCamera 时,调用相机拍照,其余两种从相册中选取图片UIImagePickerControllerSourceTypePhotoLibrary // 来自图库UIImagePickerControllerSourceTypeCamera // 来自相机UIImagePickerControllerSourceTypeSavedPhotosAlbum // 来自相册
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];// 设置 sourceTypeimagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;imagePicker.delegate = self;// 允许对图片进行拉伸、裁剪等编辑操作,如果设置为 NO,则直接使用原图imagePicker.allowsEditing = YES;[self presentViewController:imagePicker animated:YES completion:nil];
关于UIImagePickerController,戳这里,这是我之前看到的一篇博客,讲的比较详细。
6. 实现代理方法,选中图片后所做的操作放在这里,一般都是将头像控件的头像更换为新选中的头像,并将新头像上传至服务器。
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info {// 更换头像控件,这里如果key值为 UIImagePickerControllerEditedImage,获取的是编辑过的图片,如果是 UIImagePickerControllerOriginalImage 则获取原图,这里还有几个 key,有兴趣的可以研究一下self.headImageView.image = [info objectForKey:UIImagePickerControllerEditedImage];[self dismissViewControllerAnimated:YES completion:nil];// 新头像上传至服务器}
补充:到这里貌似已经结束了,但是发现调用的相册和相机显示为英文,解决方法如下:
- 在 info.plist 里面添加 Localized resources can be mixed,类型为Boolean,改为 YES,表示允许应用程序获取框架库内语言
- 在 info.plist 里面添加 Localizations,类型是 Array ,添加 Chinese
原文链接:http://www.jianshu.com/p/85c9d3d474c7
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
简单的修改项目中的头像相关推荐
- vue项目中实现头像上传的功能型组件
@vue项目中实现头像上传的功能型组件 功能需求 实现个人中心的头像上传功能: 1.用户未上传过头像,展示设定好的默认头像(区分男女) 2.支持格式png.jpg.jpeg 3.图片大小:小于等于2M ...
- vue项目中-上传图片头像并裁剪成任意大小的实现
vue项目中-上传图片头像并裁剪成任意大小的实现 先看效果图: 放大缩小-翻转-查看都有的哦! 直接上代码 <el-dialog title="图片剪裁" :visible. ...
- 【Java学习】从一个简单的HelloWorld项目中入门maven
创建一个maven项目 这里推荐官方文档:maven官方文档 [注]此篇文章也是笔者学习笔记,如有错误,请见谅. [注]我把Goal翻译成命令.比如Plugin Goal: ps:我他喵的写了一大半的 ...
- Myeclipse的使用方法-添加,修改,删除JRE,修改项目中的jre不显示问题
通过菜单Window > Preferences,然后选择Java > Installed JREs,可以打开供在Eclipse 编写程序所使用的JRE 列表.复选框选中的JRE 是默认的 ...
- java中spring的级别_java – 在简单的示例项目中更改Spring框架日志级别?
这是Spring Boot的工作,它通过slf4j处理日志路由jul,jcl和log4j,并通过slf4j使用Logback,正如您可以通过可区分的缩写命名空间类名称来判断的. 通过直接在pom文件上 ...
- 如何修改项目中Git远程仓库地址?
当开发过程中,遇到git远程仓库地址可能因git服务部署主机地址的变化而发生变化后,我们该如何快速修改. 方法一:通过git命令修改 1.进入项目文件夹,右键鼠标,点击[Git Bash Here] ...
- 如何在你的项目中集成 CAP【手把手视频教程】
前言 之前录制过一期关于CAP的视频,但是由于当时是直播时录制的视频,背景音比较杂所以质量有点差.这次的视频没有直播,直接录制的,视频质量会好很多,第一遍录制完成之后发现播放到一半没有声音,所以又重新 ...
- java jndi使用_Java项目中使用JNDI连接数据库
因为写的大作业经常用到数据库连接 所以自己写了个数据库连接的类 package DB_Link_info;/* * 数据库链接信息 */public class DB_link_Info {publi ...
- Druid使用起步—在javaWeb项目中配置监控
原文章:http://my.oschina.net/u/568779/blog/152813 ---------------------------------------------------- ...
最新文章
- Spring Boot 动手写一个 Start
- python入门要多久-初学者如何快速上手python入门要多久
- Vue.js-Day05【安装路由(vue-router)、如何使用vue-router、404配置、激活class、动态路由、编程式导航、路由嵌套、路由元信息、导航拦截】
- pdf如何转换成word文档
- html中after对应的样式怎么写,css – 如何创建内联样式:before和:after
- linux生成文件清单,Linux 获取文件名称生成列表 txt - create_filelist
- golang rpc单参数调用实例
- python语法基础知识第四关第二题_【python基础语法】第4天作业练习题
- python统计图的三层结构设计代码_【Python数据可视化】用Matplotlib绘制常见统计图,中文显示字体任意设置...
- 65.邮件服务器:Postfix
- 视频干扰现象及其原因分析
- Pr 电影中常见的回忆效果
- Android多语言切换
- Testin云测:深耕企业应用服务
- 此页面上的脚本造成Web浏览器运行速度减慢。如果继续运行,您的计算机将可能停止响应。
- Luogu P3717 [AHOI2017初中组]cover
- Unity Shader入门精要 第2章 读书笔记
- QUASI-HYPERBOLIC (拟双曲线) MOMENTUM AND ADAM FOR DEEP LEARNING——精读
- TPshop项目-功能测试(1)
- Vue系列——通过moke进行数据模拟