当前位置: 首页 > news >正文

iOS 网络--图片库本地选取

为什么80%的码农都做不了架构师?>>>   hot3.png

系统有自带的图库和相机功能,这里介绍一下如何用代码打开它们(模拟器是不支持打开相机的)和如何选取本地图片上传到图库

事前准备:

#import <AVFoundation/AVFoundation.h>
@interface ViewController ()<UINavigationControllerDelegate,UIImagePickerControllerDelegate>
{
   //设置为全局变量
    UIImagePickerController*_pc1;
    UIImagePickerController*_pc2;
}

一.UIImagePickerControllerSourceTypePhotoLibrary图片库

//初始化
    _pc1=[[UIImagePickerController alloc]init];
    //类型  PhotoLibrary--图库
    _pc1.sourceType=UIImagePickerControllerSourceTypePhotoLibrary;
    //是否允许编辑
    _pc1.allowsEditing=YES;
    //签署代理
    _pc1.delegate=self;
    //显示
    [self presentViewController:_pc1 animated:YES completion:^{
        //显示完成后执行的代码
    }];

注意:这时运行代码是不会进入图库的,还需要在info.plist文件中,加入

Privacy - Photo Library Usage Description

在弹出的窗口中,选择允许,就可以进入到图库页面了

二.UIImagePickerControllerSourceTypeCamera 相机(模拟器是无法使用的)

这里要增加一段判读语句,判断当前相机状态是否可以使用

//判断当前是否支持相机
    //Authorization--授权  Status--地位
    //Capture--获取  Device--工具
    //Restricted--受限制  Denied--拒绝
    AVAuthorizationStatus authStatus=[AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
    if (authStatus==AVAuthorizationStatusRestricted||authStatus==AVAuthorizationStatusDenied ){
        NSLog(@"相机权限受限");
        return;
    }
    //判断相机是否可以正常使用
    //Available - 可获得的
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]==NO) {
        NSLog(@"相机无法使用");
        return;
    }
    _pc2=[[UIImagePickerController alloc]init];
    _pc2.sourceType=UIImagePickerControllerSourceTypeCamera;
    _pc2.delegate=self;
    _pc2.allowsEditing=YES;
    [self presentViewController:_pc2 animated:YES completion:^{
        //显示后执行的代码
    }];

三.回调方法

①取消的响应方法

//点击了Cancel的响应方法
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
    //退出当前界面
    [_pk dismissViewControllerAnimated:YES completion:^{
        
    }];
}

②图片回调的方法,可以用来本地上传到图片库

//选择图片回调
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
{
    //info是一个字典,储存的是编辑后的图片和原图
    //UIImagePickerControllerEditedImage - 编辑后的图片
    //UIImagePickerControllerOriginalImage - 原图  
    UIImage *image = info[@"UIImagePickerControllerEditedImage"];
       //保存到图库    
    UIImageWriteToSavedPhotosAlbum(image, self, @selector(), nil);    
    [_pk dismissViewControllerAnimated:YES completion:^{
        
    }];
}

 

转载于:https://my.oschina.net/sgcllr/blog/787211

相关文章:

  • Js获取当前日期时间和格式化日期
  • 在SublimeText上配置ReactJS开发环境
  • linux ftp 服务配置
  • xmake 工程描述语法更新
  • 2 unit 9
  • mysql编程--创建函数出错的解决方案
  • 什么场景应该用 MongoDB ?
  • NFS的常用挂载参数
  • Ubuntu 14.04 网卡逻辑名修改
  • dos.orm的事务处理
  • log4j2基本操作
  • docker-gitlab
  • 让mysqldump变成并发导出导入的魔法
  • kafka术语
  • 《深入 React 技术栈》
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 【笔记】你不知道的JS读书笔记——Promise
  • C++类中的特殊成员函数
  • conda常用的命令
  • echarts花样作死的坑
  • IDEA 插件开发入门教程
  • jQuery(一)
  • laravel5.5 视图共享数据
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • mysql外键的使用
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • 那些被忽略的 JavaScript 数组方法细节
  • 排序算法学习笔记
  • 人脸识别最新开发经验demo
  • 使用 Docker 部署 Spring Boot项目
  • 使用docker-compose进行多节点部署
  • 数据结构java版之冒泡排序及优化
  • 微信公众号开发小记——5.python微信红包
  • MPAndroidChart 教程:Y轴 YAxis
  • 扩展资源服务器解决oauth2 性能瓶颈
  • 我们雇佣了一只大猴子...
  • #162 (Div. 2)
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (离散数学)逻辑连接词
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (十) 初识 Docker file
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (轉)JSON.stringify 语法实例讲解
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • ****Linux下Mysql的安装和配置
  • .bat文件调用java类的main方法
  • .Net 8.0 新的变化
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .NET4.0并行计算技术基础(1)
  • .NET框架