独角兽企业重金招聘Python工程师标准>>>
1. 权限
在打开相机拍照或者打开相册选择图片之前, 有必要先判断先是否有权限, 如果没有权限应该给个提示, 让用户自己去设置权限.
判断是否有相机权限:
//首先需要导入头文件: #import <AVFoundation/AVFoundation.h>// 判断是够有全向访问相机AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];if (authStatus == AVAuthorizationStatusRestricted || authStatus ==AVAuthorizationStatusDenied){//无权限NSLog(@"没有访问相机权限");return;}
判断是否有相册权限:
网上找了很多, 都是说用另一个类来判断的, 叫什么名字忘了, 但是是不能用的, 正确姿势是使用PHPhotoLibrary
这个类.
//首先需要导入头文件: #import <Photos/PHPhotoLibrary.h>// 判断是否有访问相册的权限PHAuthorizationStatus author = [PHPhotoLibrary authorizationStatus];if (author == PHAuthorizationStatusRestricted || author ==PHAuthorizationStatusDenied){//无权限NSLog(@"没有访问相册的权限");return;}
2. 拍照或者使用相册照片
从相机或者相册选择照片需要用到UIImagePickerController
类.
从相机选择照片:
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];imagePicker.delegate = self;imagePicker.allowsEditing = YES;imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;[self presentViewController:imagePicker animated:YES completion:nil];
从相册选择照片:
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];imagePicker.delegate = self;imagePicker.allowsEditing = YES;imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;[self presentViewController:imagePicker animated:YES completion:nil];
3. 保存照片到相册
拍照方式选择照片时候, 一般需要将照片保存到本地相册中, 保存相册的代码只有一个方法, 如下所示.
// 将拍照的图片保存到本地UIImageWriteToSavedPhotosAlbum(originalImage, self, @selector(imageSavedToPhotosAlbum:didFinishSavingWithError:contextInfo:), nil);
需要注意的是, 第一个参数是要保存的图片, 第二个参数是要执行方法的target, 第三个参数是selector, 第四个参数是传参数. 第三个参数selector, selector的方法名字一般是有参数的(测试写无参数的, 保存时候回崩溃).
//此方法一般是三个参数, 否则容易出错.- (void)imageSavedToPhotosAlbum:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo{NSString *message = @"呵呵";if (!error) {message = @"成功保存到相册";}else{message = [error description];}NSLog(@"message is %@",message);}