iOS 开发中不可避免要调用系统相机完成照片或者视频的拍摄,使用相机有两种方式:AVFoundation
和 UIImagePickerController
,如果需求比较简单并且对UI没有特殊要求可以使用 UIImagePickerController
,本文就介绍一下UIImagePickerController
的使用
UIImagePickerController 基本使用
UIImagePickerController
是苹果官方提供的一套相机、相册处理的方式,使用 UIImagePickerController
你可以调用相机拍摄照片视频、调用相册功能,它提供了非常简单的拍照方法,支持所有的基本功能,比如切换到前置摄像头、开关闪光灯、点击屏幕区域实现对焦和调整曝光等
UIImagePickerController
的基本使用比较简单,主要有以下两步;
初始化
UIImagePickerController
类的实例对象,并且设置该实例对象的相关属性实现
UIImagePickerController
的相关代理方法
先看一下 UIImagePickerController
的相关属性
|
|
以上就是使用 UIImagePickerController
用到的大部分属性了,下面代码演示具体使用
|
|
UIImagePickerControlle
既可以调用相机拍摄照片和视频,也可以设置 sourceType
获取相册或者图库中的照片和视频(本文不做讨论),除了UIImagePickerControlle
iOS 还有另外两个框架:AssetsLibrary
和 PhotoKit
也可以访问 iOS 设备的照片和视频,以后有机会讨论一下这三者的用法
在使用 UIImagePickerController
的时候的时候,最好先判断一下相机或者相关 sourceType
是否可用
|
|
注意:使用相机注意要在
Info.plist
中添加以下隐私权限的申明:
123456 <key>NSCameraUsageDescription</key><string>App需要您的同意,才能访问相机</string><key>NSMicrophoneUsageDescription</key><string>App需要您的同意,才能访问麦克风</string><key>NSPhotoLibraryUsageDescription</key><string>App需要您的同意,才能访问相册</string>
上面的工作完成之后,用户就可以在 UIImagePickerController
中选择照片或者拍摄的照片和视频了,用户选择的照片或者视频可以在 UIImagePickerController
的代理方法里面获取到,因为 UIImagePickerController
继承自 UINavigationController
, 所以要实现代理方法必须遵守 UINavigationControllerDelegate
和 UIImagePickerControllerDelegate
两个代理协议:
|
|
看如何从代理方法里面获取用户选择好的照片和视频
|
|
上面把用户选择的照片或者视频保存在相册,实际开发中可能是把照片或者视频上传到服务器,上面就是 UIImagePickerController
中使用相机拍照或者拍摄视频的用法,sourcceType
为 photoLibrary
或者 savedPhotosAlbum
时可以作为系统的相册选择器,从代理方法里获取选择的照片或者视频上面是一样的
自定义 UIImagePickerController
UIImagePickerController
的 sourcceType
为相机的时候可以简单的自定义UI,自定义UI需要用到下面的属性和方法
|
|
以下是我简单的自定义UI的 UIImagePickerController
|
|
自定义UI情况下,allowsEditing
不可用,所以拍照完成或者录制视频完成之后不会跳转编辑页面而是直接进入代理方法,在代理方法里获取照片或者视频和正常情况是一样的,就不再赘述,详细请参考 Demo 代码
上面就是 UIImagePickerController
的使用,可以发现 UIImagePickerController
只能很简单的使用系统的相机进行拍照和视频,下篇文章将介绍如何使用 AVFoundation
自定义相机,使用 AVFoundation
自定义相机可以控制硬件的参数、更加细致进行图像捕捉等
以上です
本人刚开始写博客,主要是为了给自己的知识点做一个笔记,方便自己以后查阅,如果能让别人有所启发也是荣幸之至!如有错误,欢迎指正!