在人脸识别中为方便用户准确的拍照正脸,通常都会在原生相机中添加相机人像覆盖物,最近自己公司项目中刚好遇到这样的需求,整理出来,分享给大家。效果图如下:
- 注意:由于公司项目是ipad版本,所以图片大小尺寸需要大家重新设置。
下面是主要代码。项目工程大家可点击本文后的链接,前往github下载。
BOOL isPicker = true;
// 判断相机是否可用
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
self.picker.sourceType = UIImagePickerControllerSourceTypeCamera;
// _picker.showsCameraControls = NO;//默认是打开的这样才有拍照键,前后摄像头切换的控制,一半设置为NO的时候用于自定义ovelay
UIImage *layImg = [UIImage imageNamed:@"icon_face"];
UIImageView *overLayImg = [[UIImageView alloc] initWithFrame:CGRectMake(self.view.frame.size.width/2 - 230/2, self.view.frame.size.height/2 - 340/2, 230, 340)];
overLayImg.image = layImg;
self.picker.cameraOverlayView = overLayImg;//3.0以后可以直接设置
isPicker = true;
}
if (isPicker) {
[self presentViewController:self.picker animated:YES completion:nil];
}else {
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"错误" message:@"相机不可用" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *action = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleCancel handler:nil];
[alert addAction:action];
[self presentViewController:alert animated:YES completion:nil];
}
注意:
1、 一定要在UIImagePickerControllerSourceTypeCamera模式下才可以去设置cameraOverlayView。 否则项目会崩溃。
2、在plist文件中设置Privacy - Camera Usage Description 访问相机权限。否则调用相机项目会崩溃。
3、一定要在真机运行哦~
希望给个小心心支持一下~
附上demo地址:https://github.com/yananSun/PickerViewCoverDemo.git