17.3.1 UIImagePickerController

17.3.1 UIImagePickerController

从名字上看就知道UIImagePickerController是图片选取控制器,它允许开发者从某些指定的源(source)中获取图片或者视频。早期的系统中只能获取图片资源,后来扩展到了视频资源。在这一小节中,我们以相册作为UIImagePickerController的源,从相册中选取需要的图片或者视频。创建一个UIImagePickerControllerPractise的工程,在Main.storyboard中添加一个按钮,如图17.3.1所示:

图17.3.1 为View Controller添加一个按钮

为这个按钮在View Controller中增加一个action,代码如下:

动手写17.3.1 UIImagePickerControllerPractise-> ViewController.swift

addPhoto是点击按钮之后触发的action函数,在addPhoto()方法中创建了一个UIImagePicker Controller的实例,指定当前的View Controller为委托的实例。设置图片来源是相册,没有限定媒体格式,可以是照片也可以是视频。最后将其展示在屏幕上,供用户选择照片。UIImagePicker Controller的delegate需要满足两个协议,一个是UIImagePickerControllerDelegate,另一个是 UINavigationControllerDelegate,在满足了这个两个协议之后,将picker的delegate设置为View Controller本身。此外,如果需要访问相册,需要在info.plist中添加“NSPhotoLibraryUsage Description”键以及相应的提示描述,代码如下:

如果要使用录制视频的功能,则需要再声明“NSCameraUsageDescription”以及“NSMicrophone Usage Description”两个键的提示描述,代码如下:

声明之后运行模拟器,点击“添加”按钮;在允许访问相册之后,弹出界面,如图17.3.2所示:

图17.3.2 展示UIImagePickerController

用户点击“cancel”按钮,或者选择一个图片之后,这个展示的视图控制器就会消失。在本例中sourceType为photoLibrary,以相册的形式展示给了用户。如果是savedPhotosAlbum,那么将会以另外一种形式呈现给用户,而且只有“保存的照片”。

如果需要录制视频或者拍照,将sourceType设置为camera,并且将mediaTypes加上支持的类型,代码如下:

在真机上运行便可以进行视频或照片拍摄了。