将iOS摄像头对焦到点击位置
我有一个手势识别器,当屏幕被点击时,它会调用下面的函数 设备处于纵向模式,将iOS摄像头对焦到点击位置,ios,iphone,swift,Ios,Iphone,Swift,我有一个手势识别器,当屏幕被点击时,它会调用下面的函数 设备处于纵向模式,cameraView占据屏幕50%到90%的可变高度,但这并不重要,因为我在该视图中获得了点击位置 apple文档说明焦点是一个标准化坐标(x和y都在0和1之间),在横向模式下左上角(主页按钮位于右侧)位于(0,0),右下角位于(1,1) 将对焦模式设置为自动对焦而不是连续自动对焦会使情况变得更糟。我错过了什么?其他应用程序也可以正常工作 func focusPhoto(recognizer : UITapGestureR
cameraView
占据屏幕50%到90%的可变高度,但这并不重要,因为我在该视图中获得了点击位置
apple文档说明焦点是一个标准化坐标(x和y都在0和1之间),在横向模式下左上角(主页按钮位于右侧)位于(0,0),右下角位于(1,1)
将对焦模式设置为自动对焦而不是连续自动对焦会使情况变得更糟。我错过了什么?其他应用程序也可以正常工作
func focusPhoto(recognizer : UITapGestureRecognizer) {
if photoCaptureDevice.lockForConfiguration(nil) && photoCaptureDevice.focusPointOfInterestSupported {
var tapLocation = recognizer.locationInView(cameraView);
var focalPoint = CGPoint(x: tapLocation.x/cameraView.frame.width, y: tapLocation.y/cameraView.frame.height);
photoCaptureDevice.focusPointOfInterest = focalPoint
//photoCaptureDevice.focusMode = AVCaptureFocusMode.AutoFocus
photoCaptureDevice.unlockForConfiguration()
}
}
也尝试过这样做:
func focusPhoto(recognizer : UITapGestureRecognizer) {
if photoCaptureDevice.lockForConfiguration(nil) && photoCaptureDevice.focusPointOfInterestSupported {
photoCaptureDevice.focusPointOfInterest = previewLayer!.captureDevicePointOfInterestForPoint(tapLocation)
photoCaptureDevice.unlockForConfiguration()
}
}
您使用的是
AVCaptureVideoPreviewLayer
有一种方法可用于将抽头点转换为正确的坐标空间进行聚焦
-captureDevicePointOfInterestForPoint:
请参阅我的更新。不能让它工作,但也许我做错了?