相信大家开发自定义相机的时候都有碰到过 相机怎么自定对焦。 百度查找到的一般都是检查照片的模糊度。其实不用这么麻烦苹果有自带的方法。

不多说附上代码

/**

*  AVCaptureSession对象来执行输入设备和输出设备之间的数据传递

*/

@property (nonatomic,strong)AVCaptureSession* session;

@property (nonatomic,strong)AVCaptureDevice *device;

这个2个是开发相机的必备的

self.session = [[AVCaptureSessionalloc]init];

if ([self.sessioncanSetSessionPreset:AVCaptureSessionPresetPhoto])

{

self.session.sessionPreset = AVCaptureSessionPresetPhoto;

}

NSError *error;

self.device = [AVCaptureDevicedefaultDeviceWithMediaType:AVMediaTypeVideo];

//更改这个设置的时候必须先锁定设备,修改完后再解锁,否则崩溃

[self.devicelockForConfiguration:nil];

//设置闪光灯为自动

[self.devicesetFlashMode:AVCaptureFlashModeAuto];

[_sessionbeginConfiguration];

if ([_deviceisWhiteBalanceModeSupported:AVCaptureWhiteBalanceModeAutoWhiteBalance]) {

[_devicesetWhiteBalanceMode:AVCaptureWhiteBalanceModeAutoWhiteBalance];

}

[self.deviceunlockForConfiguration];

[_sessioncommitConfiguration];

self.videoInput = [[AVCaptureDeviceInputalloc]initWithDevice:self.deviceerror:&error];

if (error) {

NSLog(@"%@",error);

}

self.stillImageOutput = [[AVCaptureStillImageOutputalloc]init];

//输出设置。AVVideoCodecJPEG  输出jpeg格式图片

NSDictionary * outputSettings = [[NSDictionaryalloc]initWithObjectsAndKeys:AVVideoCodecJPEG,AVVideoCodecKey,nil];

[self.stillImageOutputsetOutputSettings:outputSettings];

// 这里就是监听相机自动对焦的

[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(subjectAreaDidChange:)name:AVCaptureDeviceSubjectAreaDidChangeNotificationobject:self.device];

if ([self.sessioncanAddInput:self.videoInput]) {

[self.sessionaddInput:self.videoInput];

}

if ([self.sessioncanAddOutput:self.stillImageOutput]) {

[self.sessionaddOutput:self.stillImageOutput];

}

//初始化预览图层

self.previewLayer = [[AVCaptureVideoPreviewLayeralloc]initWithSession:self.session];

[self.previewLayersetVideoGravity:AVLayerVideoGravityResize];

[self.previewLayersetFrame:CGRectMake(0,0,self.frame.size.width,self.frame.size.height)];

- (void)subjectAreaDidChange:(NSNotification *)notification

{

//先进行判断是否支持控制对焦

if (_device.isFocusPointOfInterestSupported &&[_deviceisFocusModeSupported:AVCaptureFocusModeAutoFocus]) {

NSError *error =nil;

//对cameraDevice进行操作前,需要先锁定,防止其他线程访问,

[_devicelockForConfiguration:&error];

[_devicesetFocusMode:AVCaptureFocusModeAutoFocus];

[selffocusAtPoint:self.center];

//操作完成后,记得进行unlock。

[_deviceunlockForConfiguration];

}

}

完了记得移除监听。

ios 相机开发 自动对焦相关推荐

  1. iOS 11开发教程(一)

    iOS 11开发概述 iOS 11是目前苹果公司用于苹果手机和苹果平板电脑的最新的操作系统.该操作系统的测试版于2017年6月6号(北京时间)被发布.本章将主要讲解iOS 11的新特性.以及使用Xco ...

  2. android之相机开发

     http://blog.csdn.net/jason0539/article/details/10125017 android之相机开发 分类: android 基础知识2013-08-20 22: ...

  3. Android 拍照后图片的旋转,合并,兼容性 相机开发

    在看这篇文章之前,我建议先看相机开发基础 针对这个功能需要做自定义相机,根据Camera相机类和SurfaceView类来实现自定义图形预览拍照功能. 但在实现过程中出现几个难点: 1.如何将自己产品 ...

  4. 收集各种 iOS App 开发可以用到的代码示例

    code4app.com 这网站不错,收集各种 iOS App 开发可以用到的代码示例  cocoacontrols.com/ 英文版本的lib收集  objclibs.com/ 精品lib的收集网站 ...

  5. 连载 | Android之Camera1实现相机开发

    一.前言 现在很多app都会有拍照功能,一般调用系统进行拍照裁剪就能满足平时的需求,但有些场景或者特殊情况下如:持续不间断拍多张照片或者是进行人脸识别的时候,这时候之间调用系统原生相机拍照时不能满足自 ...

  6. 视频教程-使用Objective-C进行iOS移动开发-iOS

    使用Objective-C进行iOS移动开发 15年以上IT行业工作经验.8年以上IT行业教学经验.丰富的项目经验和授课经验,授课形式不拘一格.熟悉iOS开发,网页开发.Java开发.平面设计等技术, ...

  7. Android相机开发详解(一)

    Android相机开发详解(一) 请支持原创,尊重原创,转载请注明出处:http://blog.csdn.net/kangweijian(来自kangweijian的csdn博客) Android相机 ...

  8. Android之Camera1实现相机开发

    一.前言 现在很多app都会有拍照功能,一般调用系统进行拍照裁剪就能满足平时的需求,但有些场景或者特殊情况下如:持续不间断拍多张照片或者是进行人脸识别的时候,这时候之间调用系统原生相机拍照时不能满足自 ...

  9. iOS应用开发之权限说明

    在iOS应用开发的过程中,需要配置info.plist文件给应用添加权限,该文件是键值对的形式.下面对info.plist文件中的部分权限进行说明,详细内容请以苹果开发者官网为准:https://de ...

  10. IOS入门开发大概课程内容记录

    达内课程体系 第一阶段.Web开发基础(Linux操作系统.Nigix.XHTML技术核心.CSS技术核心):课程持续3周共96课时. 模块 课程目标 内容 项目 1 Mac Fundamental ...

最新文章

  1. 10.QT事件机制源码时序分析(中)
  2. linux检测远程端口是否打开
  3. 大规模数据处理开源软件
  4. 如何在JSP里自定义标签
  5. webdriver 的三种等待方式
  6. 想一个颠覆性技术方向建议,你能想到什么?
  7. java题-java运行时异常与一般异常有何异同?
  8. 《OpenGL编程指南(原书第9版)》——3.2 OpenGL缓存数据
  9. (转载)C#中如何获取当前路径的几种方法
  10. 寻找大富翁(堆排序)
  11. creo数控编程怎么样_世界一流数控编程软件,你都有了解过么?
  12. 水经注叠加cad_相见恨晚的50个CAD技巧
  13. Linux内核panic到ramdump基本流程
  14. 2022清明节放假安排来了,制定假日计划可用云便签软件
  15. 教小师妹学多线程,看完我写的例子,脸红成那样!
  16. WebGL-Shader入门(3.着色器语言的限定词-参数限定词/存储限定词/精度限定词)
  17. 斯坦福ML课程——python转写(Week7—课程作业ex6_2)
  18. Unity引擎及编辑器C#源代码赏析(一)—目录结构
  19. 00后大学生在数学真理阳光下学习微积分
  20. 揭秘HTML5小游戏排名,究竟哪些游戏最受欢迎?

热门文章

  1. 金山篡改浏览器主页问题(改成毒霸网址大全)
  2. 对于计算机课程的期待,关于初中计算机论文
  3. C语言编程入门(绪论)
  4. Linux/debian/ubuntu/deepin 等系统禁用鼠标中键(滚轮)按下粘贴的方法
  5. python 时间格式处理
  6. LA 4490 Help Bubu (状压DP)
  7. 计算圆周长,圆面积,圆球表面积,圆球体积,圆柱体积
  8. 【三年面试五年模拟】算法工程师的独孤九剑秘籍(第十式)
  9. 正弦波形多波形叠加的音频文件生成工具v1.0使用说明
  10. 新的计算机的wifi连接无线网络连接,如何设置电脑优先连接无线WIFI网络