文档章节

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

JoshSone
 JoshSone
发布于 2016/11/14 07:41
字数 507
阅读 15
收藏 0
点赞 0
评论 0

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

事前准备:

#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:^{
        
    }];
}

 

© 著作权归作者所有

共有 人打赏支持
JoshSone
粉丝 7
博文 62
码字总数 32794
作品 0
长春
iOS工程师
iOS高仿微信、仪表盘、图片标注图片滤镜、高斯模糊、上拉加载、下拉刷新等源码

iOS精选源码 Swift-图片画框标注(http://www.code4app.com/thread-29884-1-1.html) Swift版的上拉加载, 下拉刷新控件(一句话集成, 超级易用)(http://www.code4app.com/thread-29885-1-1.html...

sunnyaigd ⋅ 05/22 ⋅ 0

2018 一份"有点难"的iOS面试题(5年iOS开发)

序言: 之前一时兴致在本站上出过一份iOS的中级面试题,引起一些关注,不少同学表示对”隐藏关卡“感兴趣。升级版iOS面试题来了,目测难倒90%iOS程序员,目测一大波程序员撸着袖子在靠近。 ...

原来是泽镜啊 ⋅ 05/26 ⋅ 0

iOS基础深入补完计划--NSURLSession使用详解(附Demo)

目录 前言 API Demo 前言 本文主要是把NSURLSession以及NSURLSessionTask相关的代理方法全部整理了一下。 旨在大体了解在一个iOS网络请求中、一个任务究竟经理了什么。 而我们、又能做些什么...

kirito_song ⋅ 05/10 ⋅ 0

iOS宇宙大战游戏、调试工具、各种动画、AR相册、相机图片编辑等源码

iOS精选源码 日期时间选择器,swift(http://www.code4app.com/thread-30244-1-1.html) Space Battle 宇宙大战 SpriteKit游戏源码(http://www.code4app.com/thread-30246-1-1.html) LLDebugTo......

sunnyaigd ⋅ 06/19 ⋅ 0

面试官自述:面向高级开发人员的iOS面试问题

当您准备进行技术性iOS面试时,了解您可能会询问哪些主题以及经验丰富的iOS开发人员期望什么是非常重要的。 这是许多硅谷公司用来衡量iOS候选人资历水平的一系列问题。 这些问题涉及iOS开发的...

菇哒微课 ⋅ 04/26 ⋅ 0

iOS源码补完计划--AFNetworking 3.1.0源码研读

参拜一下AFNetworking的源码。 第四篇源码、暂时来看也是iOS方向的最后一篇、撸完准备趁着热乎撸一撸网络协议。 目录 准备工作 功能模块 AFURLSessionManager/AFHTTPSessionManager AFNetwo...

kirito_song ⋅ 05/25 ⋅ 0

一样的iOS开发程序员为什么有人4k有人40k?

前言 移动开发真正火起来其实就是最近这几年,iOS 开发技术因为发展也就才这么几年,所以值得做的事情还有很多,这就造成了每年苹果的 WWDC 都会推出一堆新的特性和 API。整体上来说,这对业...

原来是泽镜啊 ⋅ 05/16 ⋅ 0

转:一套代码iOS、Android两端运行,Google Flutter意味着什么?

原文:https://www.toutiao.com/a6569388465538990600/?ttfrom=weixin&utmcampaign=clientshare×tamp=1529580533&app=newsarticle&utmsource=weixin&iid=35476649324&utmmedium=toutiao......

鸿蒙无上至尊 ⋅ 前天 ⋅ 0

如何判断你是合格的高级iOS开发工程师?

前言 随着移动互联网的高速发展泄洪而来,有意学习移动开发的人越来越多了,竞争也是越来越大,需要学习的东西很多。如何才能在激烈的移动开发者竞争中一枝独秀,成为一名真正合格的高级iOS...

_小迷糊 ⋅ 05/26 ⋅ 0

iOS逆向工程- 学习整理(工具详解)

前言 一、逆向工程的要求 具备丰富的 iOS 开发经验 最好能非常熟悉 iOS 设备的硬件构成,iOS 系统的运行原理。 拿到任意一个 App 之后能够大致推断出它的项目规模和使用的技术,比如它的MVC模...

_小迷糊 ⋅ 05/11 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

使用 vue-cli 搭建项目

vue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目,GitHub地址是:https://github.com/vuejs/vue-cli 一、 安装 node.js 首先需要安装node环境,可以直接到中...

初学者的优化 ⋅ 18分钟前 ⋅ 0

设计模式 之 享元模式

设计模式 之 享元模式 定义 使用共享技术来有效地支持大量细粒度对象的复用 关键点:防止类多次创建,造成内存溢出; 使用享元模式来将内部状态与外部状态进行分离,在循环创建对象的环境下,...

GMarshal ⋅ 33分钟前 ⋅ 0

SpringBoot集成Druid的最简单的小示例

参考网页 https://blog.csdn.net/king_is_everyone/article/details/53098350 建立maven工程 Pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM......

karma123 ⋅ 今天 ⋅ 0

Java虚拟机基本结构的简单记忆

Java堆:一般是放置实例化的对象的地方,堆分新生代和老年代空间,不断未被回收的对象越老,被放入老年代空间。分配最大堆空间:-Xmx 分配初始堆空间:-Xms,分配新生代空间:-Xmn,新生代的大小一...

算法之名 ⋅ 今天 ⋅ 0

OSChina 周日乱弹 —— 这么好的姑娘都不要了啊

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @TigaPile :分享曾惜的单曲《讲真的》 《讲真的》- 曾惜 手机党少年们想听歌,请使劲儿戳(这里) @首席搬砖工程师 :怎样约女孩子出来吃饭,...

小小编辑 ⋅ 今天 ⋅ 8

Jenkins实践3 之脚本

#!/bin/sh# export PROJ_PATH=项目路径# export TOMCAT_PATH=tomcat路径killTomcat(){pid=`ps -ef | grep tomcat | grep java|awk '{print $2}'`echo "tom...

晨猫 ⋅ 今天 ⋅ 0

Spring Bean的生命周期

前言 Spring Bean 的生命周期在整个 Spring 中占有很重要的位置,掌握这些可以加深对 Spring 的理解。 首先看下生命周期图: 再谈生命周期之前有一点需要先明确: Spring 只帮我们管理单例模...

素雷 ⋅ 今天 ⋅ 0

zblog2.3版本的asp系统是否可以超越卢松松博客的流量[图]

最近访问zblog官网,发现zlbog-asp2.3版本已经进入测试阶段了,虽然正式版还没有发布,想必也不久了。那么作为aps纵横江湖十多年的今天,blog2.2版本应该已经成熟了,为什么还要发布这个2.3...

原创小博客 ⋅ 今天 ⋅ 0

聊聊spring cloud的HystrixCircuitBreakerConfiguration

序 本文主要研究一下spring cloud的HystrixCircuitBreakerConfiguration HystrixCircuitBreakerConfiguration spring-cloud-netflix-core-2.0.0.RELEASE-sources.jar!/org/springframework/......

go4it ⋅ 今天 ⋅ 0

二分查找

二分查找,也称折半查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于...

人觉非常君 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部