如何计算给定 AVCaptureDevice 的 focusPointOfInterest(0,0 和 1,1 之间的 CGPoint 值)?
我一直在关注最新 WWDC 的代码示例,但我真的不明白如何进行计算。 另外,我的应用程序处于横向与纵向(如示例中所示)...因此,除了不了解如何计算事物之外,我不确定需要进行哪些调整才能考虑横向方向.
如有任何帮助,我们将不胜感激。
谢谢-wg
您传递一个 CGPoint,其中 {0,0} 表示图片区域的左上角,{1,1} 表示横向模式下的右下角,主页按钮位于右侧 - 即使设备处于纵向状态,这也适用模式。
如果您有
AVCaptureVideoPreviewLayer
,您可以使用 captureDevicePointOfInterestForPoint
来转换通过点击手势获得的 CGPoint
。
这样您就不必担心方向问题。
您可以通过执行以下操作将点从屏幕坐标旋转到相机坐标:
let interfaceOrientation = (UIApplication.shared.connectedScenes.first as? UIWindowScene)?.interfaceOrientation
switch interfaceOrientation {
case .landscapeLeft:
break
case .landscapeRight:
correctedFocusPoint = .init(x: 1 - focusPoint.x, y: 1 - focusPoint.y)
case .portraitUpsideDown:
correctedFocusPoint = .init(x: 1 - focusPoint.y, y: focusPoint.x)
default:
correctedFocusPoint = .init(x: focusPoint.y, y: 1 - focusPoint.x)
}