写在前面
- 在手机APP日益增加的前提下,如何更好的提升用户的交互体验似乎成为衡量一个APP重要指标。上述的感悟源于实际工作的需求,就是在APP中添加一个更换用户头像的功能。
- 也许别人会认为这样一个小功能不算什么,但从用户交互角度考虑,这样一个功能的设计有一定学问,待我慢慢道来。
获取相册最直接的方式——UIImagePickerController
-
功能介绍:可直接显示分组的相处的列表,用户选择不同相册的照片后,可在委托方法中获得该图片对象;
-
API提供三种数据源:
UIImagePickerControllerSourceTypeCamera: //拍照
UIImagePickerControllerSourceTypePhotoLibrary: //相册
UIImagePickerControllerSourceTypeSavedPhotosAlbum: //图片库
- 基本使用
//UIImagePickerController 属于UIKit
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
// 若设备支持相机,使用拍照功能;否则从照片库中选择
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
} else {
imagePicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
}
imagePicker.delegate = self; //设置委托,
- 跳转到系统相册界面
_imagePickerController.allowsEditing = YES;//允许拍照完对照片进行裁剪
[self presentViewController:_imagePickerController animated:YES completion:nil];
写到这里,基本的调用系统相册的功能就实现了,唯一需要做的是参数配置
- 遵守的协议
UINavigationControllerDelegate,UIImagePickerControllerDelegate
代理方法
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{
//成功获取照片
}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{
//获取照片失败
}
- 捕捉多媒体的的类型 UIImagePickerControllerCameraCaptureMode
UIImagePickerControllerCameraCaptureModePhoto,//照片
UIImagePickerControllerCameraCaptureModeVideo//视频
- 摄像头的类型 UIImagePickerControllerCameraDevice
UIImagePickerControllerCameraDeviceRear,//后置摄像头
UIImagePickerControllerCameraDeviceFront //前置摄像头
UIImagePickerControllerCameraFlashMode // 设置闪光灯的模式
UIImagePickerControllerCameraFlashModeOff = -1,//关闭闪光灯
UIImagePickerControllerCameraFlashModeAuto = 0