(iOS开发) 弹出选择相册图片以及之后的图片地址_下个夏天xia的博客-程序员秘密

技术标签: iOS开发  ios开发  ios  


1、首先需要遵循代理:UIImagePickerControllerDelegate

2、PS:此方法适配iOS8之后,如果想用UIAlertView,请自己实现

-(void)changeIcon:(UITapGestureRecognizer*)tap
{
    /**
     *  弹出提示框
     */
    //初始化提示框
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];
    //按钮:拍照,类型:UIAlertActionStyleDefault
    [alert addAction:[UIAlertAction actionWithTitle:NSLocalizedString(@"local_takePhoto", nil) style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action){
        /**
         其实和从相册选择一样,只是获取方式不同,前面是通过相册,而现在,我们要通过相机的方式
         */
        UIImagePickerController *PickerImage = [[UIImagePickerController alloc]init];
        //获取方式:通过相机
        PickerImage.sourceType = UIImagePickerControllerSourceTypeCamera;
        PickerImage.allowsEditing = YES;
        PickerImage.delegate = self;
        [self presentViewController:PickerImage animated:YES completion:nil];
    }]];

    //按钮:从相册选择,类型:UIAlertActionStyleDefault
    [alert addAction:[UIAlertAction actionWithTitle:NSLocalizedString(@"local_photoChoose", nil) style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
        //初始化UIImagePickerController
        UIImagePickerController *PickerImage = [[UIImagePickerController alloc]init];
        //获取方式1:通过相册(呈现全部相册),UIImagePickerControllerSourceTypePhotoLibrary
        //获取方式2,通过相机,UIImagePickerControllerSourceTypeCamera
        //获取方法3,通过相册(呈现全部图片),UIImagePickerControllerSourceTypeSavedPhotosAlbum
        PickerImage.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
        //允许编辑,即放大裁剪
        PickerImage.allowsEditing = YES;
        //自代理
        PickerImage.delegate = self;
        //页面跳转
        [self presentViewController:PickerImage animated:YES completion:nil];
    }]];
    //按钮:取消,类型:UIAlertActionStyleCancel
    [alert addAction:[UIAlertAction actionWithTitle:NSLocalizedString(@"local_cancle", nil) style:UIAlertActionStyleCancel handler:nil]];
    [self presentViewController:alert animated:YES completion:nil];
}

3、实现 PickerImage代理方法:

#pragma mark--------PickerImage完成后的代理方法
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{
    //定义一个newPhoto,用来存放我们选择的图片。
    UIImage *newPhoto = [info objectForKey:@"UIImagePickerControllerEditedImage"];
    NSLog(@"newPhoto :%@",newPhoto);
    [iconImageView setImage:newPhoto];
    [self dismissViewControllerAnimated:YES completion:nil];
    
    //需要更新服务器上的图片
//    [self uploadIcon:newPhoto];
}


4、上传图片到服务器请见:传送门来了


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wf990051004/article/details/52993135

智能推荐

springboot郑和mysql_郑剑峰的个人博客 » SpringBoot Activiti6系列教程(二)-基于mysql数据库初始化..._伊红美兰的博客-程序员秘密

数据库初始化activiti默认采用内存数据库h2,作为本地测试是够了,但是作为测试环境,开发环境和生产环境,是远远不够的,我们需要使用更为强大和灵活的数据库,以下是zip包里提供的数据库创建脚本activiti.db2.create.engine.sqlactiviti.db2.create.history.sqlactiviti.db2.create.identity.sqlactiviti....

记事:MySQL V8.0设置大小写不敏感后不能正常启动_mysql8.0.32无法启动_微积分g的博客-程序员秘密

之前安装MySQL时大小写是敏感的,结果公司RDS上的生产库中配置是不敏感的,导致不同步,今天需要把开发数据库也修改为大小写不敏感,经过网上搜索,需要修改my.cnf配置文件。第一步:查找my.cnf文件位置1、使用 find / -name "my.cnf"/etc/my.cnf找到my.cnf 文件位于 /etc 目录下。2、vi /etc/my.cnf尾部增加配置lower_case_table_names=1ESC wq 退出并保存。3、重启MySQL停掉...

韦东山 鸿蒙移植必备的基础知识_韦东山资料鸿蒙移植资料_韦东山的博客-程序员秘密

1. 基础知识移植内核对技术的要求比较高、比较细。1.1 单片机相关的知识栈的作用加载地址、链接地址重定位几个简单的硬件知识串口定时器中断的概念1.2 Linux操作相关的知识Linux常用命令简单的脚本:脚本就是把命令写在一个文件里MakefileGCC编译命令1.3 芯片相关知识能阅读芯片手册(英文)移植最小系统时,涉及的手册内容不多能看懂硬件原理图移植最小系统时,涉及的原理图内容不多2. 驱动程序知识对于只有

启动定时器t0的工作指令是_关于51单片机的定时器T0、T1总结_weixin_39870199的博客-程序员秘密

这是我总结的51单片机的中断定时器原理,之后会附上附件。第一次发帖,不足之处请多多包含!我总结的文稿画面很花,所以给上个参考,各位不习惯的话,请酌情选择。定时器.jpg (25.83 KB, 下载次数: 196)2017-12-26 22:53 上传参考.jpg (75.2 KB, 下载次数: 96)2017-12-26 23:12 上传目录一、原理:1、对中断和定时器进行初始化:①定时器/计数器...

用户密码MD5加密以及验证_燕少༒江湖的博客-程序员秘密

MD5概念:https://baike.baidu.com/item/MD5/212708?fr=aladdin盐值概念:https://baike.baidu.com/item/salt%E5%80%BC注册:1、生成固定长度的随机盐;2、用户密码加密生成32位16进制字符串;(建议用户的注册密码经过严格的校验,至少输入3类字符,长度至少10位、注册密码有包含大小写字母等等)3、...

关于ORACLE的case when 嵌套语句_oracle case when嵌套用法_wslone100的博客-程序员秘密

CASE WHEN T12.ISPRINT='1' THEN CASE WHEN T.VECENTYPE='3' THEN CASE WHEN T3.PRBNSCOPE_NAME IS NOT NULL THEN T3.PRBNSCOPE_NAME ELSE CRTMIS.GETBNSCOPE(T3.BNSCOP

随便推点

韦东山嵌入式学习视频_Engineer-Bruce_Yang的博客-程序员秘密

本人微信公众号,同时本人也是韦东山老师的代理

UVC 摄像头驱动开发_uvc摄像头驱动开发_我就是陶渊明的博客-程序员秘密

【USB gadget是什么?】 Linux-USB Gadget 驱动框架(以下简称 Gadget)实现了USB 协议定义的设备端的软件功能。相对于 Linux USB 主机端(Host)驱动而言, Gadget 驱动出现较晚,它出现在2.4.23 以后。Gadget 框架提出了一套标准 API, 在底层, USB 设备控制器(USB Device Controller, UDC)驱动则实现这一套 API, 不同的 UDC (通常是 SOC 的一部分)需要不同...

Fatal error in launcher: Unable to create process using '"c:\users\jackson li\appdata\local\programs_"fatal error in launcher: unable to create process_lezeqe的博客-程序员秘密

几天前,我添加多个Python版本,结果发现虚拟环境创建不了。再测试一下pip,发现也不行了,报错如下:然后刚刚也找到了解决方法,如下:

【uniapp—H5本地开发】设置请求代理,解决跨域,以及请求方法的封装_h5封装app跨域_avoidaily的博客-程序员秘密

一、设置请求代理,解决跨域manifest.json——源码视图——h5(配置反向代理)"h5" : { "devServer" : { //"port" : 8080, //设置端口号 "disableHostCheck" : true, "proxy" : { "/api" : {// /api重定向 将下方的target拼接到接口的最前面 // 线上接口域名 打包时使用

GD GD32F103RCT6 微控制器_gd32f103rct6引脚功能_深圳市泰凌微电子的博客-程序员秘密

GD32F103RCT6是全新的通用型32位高性能、低功耗微控制器系列产品,采用ARMR CortexR-M3内核,适用于广泛的应用场景。

windows server2008r2 管理员身份_win2008管理员权限-程序员秘密

最近,发现有一台windows2008R2t服务器,运行DataSnap编程的SERVER服务程序,出现不能远程传递上传、下载文件问题,造成不能及时升级软件问题。 那么从服务器端、客户端、VPN专线连接、服务器代码、客户端代码,逐个找原因,终于找到。是服务器上的SERVER程序末以管理员身份运行。