AVCaptureDevice的方法,之前查了網上和stackoverflow上,沒有,於是自己試着做了下,成功了,分享下。
//實例化 AVCaptureDevice *captureDevice = [[AVCaptureDevice alloc] init]; //先進行判斷是否支持控制對焦 if (captureDevice.isFocusPointOfInterestSupported &&[captureDevice.isFocusModeSupported:AVCaptureFocusModeAutoFocus]) { NSError *error = nil; //對cameraDevice進行操作前,需要先鎖定,防止其他線程訪問, [self.recorder.cameraDevice lockForConfiguration:&error]; [self.recorder.cameraDevice setFocusMode:AVCaptureFocusModeAutoFocus]; [self.recorder.cameraDevice setFocusPointOfInterest:CGPointMake(pointX,pointY)]; //操作完成后,記得進行unlock。 [self.recorder.cameraDevice unlockForConfiguration]; }
由於我做的的視頻拍攝時手動對焦,
用了TapGestureRecognizer 的實例,添加到self.view上,
獲得點擊的坐標,然后用坐標對屏幕的尺寸進行數據處理,應為focusPointOfInterest是從左上到右下(0~1,0~1)范圍內
比如點擊的點tap.x 和tap.y
豎屏時候對焦點應是(tap.x/self.view.frame.size.width, tap.y/self.view.frame.size.height)
另外,這樣或許對用戶來說不夠只管,看過系統相機都知道,點擊對焦點時,有個方塊縮小
我的實現方法是,用了uiview的實例,邊框黃色,2像素寛,背景色clearColor,先添加到self.view上,大小為0,tap手勢的方法里,設置uiview大小為40,然后加個動畫設置uiview大小為20,這樣當你點擊屏幕某處的時候,有個黃色框縮小,同時,鏡頭進行對焦。
(如果有更好的方法,請指教下)