2015-05-12 35 views
2

我有一個UIGesture識別器,當屏幕被點擊時調用下面的功能。聚焦iOS相機的水龍頭位置

設備處於肖像模式,cameraView佔用屏幕大約50%至90%之間的變化高度,但這應該不重要,因爲我在該視圖中獲取了抽頭位置。

蘋果文檔狀態的焦點是一個標準化的座標(x和y都在0和1之間),左上角爲橫向模式(home按鈕在右邊)在(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() 
    } 
} 

回答

1

您使用的是AVCaptureVideoPreviewLayer

您可以使用一種方法將點擊點轉換爲正確的座標空間進行對焦。

- captureDevicePointOfInterestForPoint:

+0

查看我的更新。無法讓它工作,但也許我做錯了? – maxhud

+0

有沒有其他想法? – maxhud