免费开源的iOS开发学习平台

相机与相册的调用:1-UIImagePickerController简介

在App开发时,当我们需要调用摄像头拍照或者希望从相册中选择一张照片时,都可以使用UIImagePickerController类来完成。UIImagePickerController类把从iOS设备中获取图片的操作进行了统一封装,使用图片来源来进行区分,也就是说: 不论从摄像头拍照获取图片,还是从相册中选取图片,区别仅仅在于获取图片的渠道或方式不同,其他对图片的处理都是统一的。

UIImagePickerController类常用属性与方法

UIImagePickerController类中提供了用于图片选择的相关属性以及方法,同时定义了UIImagePickerControllerDelegate代理协议,可以用于监测用户选择图片的行为动作。UIImagePickerController类中,如下属性和方法需要重点掌握。

  • 图片获取来源,默认为照片库。UIImagePickerControllerSourceType的取值有三个,分别为UIImagePickerControllerSourceTypePhotoLibrary(照片库)、UIImagePickerControllerSourceTypeCamera(相机)、UIImagePickerControllerSourceTypeSavedPhotosAlbum(相册)。
@property(nonatomic) UIImagePickerControllerSourceType  sourceType; 
  • 设置当拍照完或在相册选完照片后,是否允许编辑图像。
@property(nonatomic) BOOL  allowsEditing;
  • 可对图像或者照相机模式进行进一步操作设置的代理。
@property(nullable,nonatomic,weak) id <UINavigationControllerDelegate, UIImagePickerControllerDelegate> delegate;
  • 判断设备是否支持照相机/图片库/相册功能。
+ (BOOL)isSourceTypeAvailable:(UIImagePickerControllerSourceType)sourceType;  

UIImagePickerControllerDelegate代理协议

UIImagePickerControllerDelegate代理协议中提供了用户选择图片后的回调方法,在回调方法中可以获取到用户选择的图片,从而可以进行进一步的处理。

  • 用户完成图片选择后调用。在该方法的参数info中我们可以获取到用户选择的图片信息。由于参数info是一个字典,因此在UIImagePickerController类中定义了相关的键值名称用于获取对应的值,例如,通过UIImagePickerControllerOriginalImage键即可获取到用户选择的原始图片。
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info;
  • 用户取消选择后调用。
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker;