From 69f86a9c0a5ede5f33f87c79f17b2baa7f26c46d Mon Sep 17 00:00:00 2001 From: Sami Samhuri Date: Thu, 26 Oct 2023 15:05:45 -0700 Subject: [PATCH] Use dual camera when triple isn't available, don't fall back directly to wide --- Source/SwiftyCamViewController.swift | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Source/SwiftyCamViewController.swift b/Source/SwiftyCamViewController.swift index 2190abf..04c8dad 100644 --- a/Source/SwiftyCamViewController.swift +++ b/Source/SwiftyCamViewController.swift @@ -761,8 +761,9 @@ open class SwiftyCamViewController: UIViewController { /// Get Devices - fileprivate class func defaultCaptureDevice(preferringPosition position: AVCaptureDevice.Position = .back) -> AVCaptureDevice? { + fileprivate class func defaultCaptureDevice(preferringPosition position: AVCaptureDevice.Position) -> AVCaptureDevice? { AVCaptureDevice.default(.builtInTripleCamera, for: .video, position: position) + ?? AVCaptureDevice.default(.builtInDualCamera, for: .video, position: position) ?? AVCaptureDevice.default(.builtInWideAngleCamera, for: .video, position: position) } @@ -910,7 +911,7 @@ extension SwiftyCamViewController { return } do { - let captureDevice = Self.defaultCaptureDevice() + let captureDevice = Self.defaultCaptureDevice(preferringPosition: currentCamera.captureDevicePosition) try captureDevice?.lockForConfiguration() zoomScale = min(maxZoomScale, max(1.0, min(beginZoomScale * pinch.scale, captureDevice!.activeFormat.videoMaxZoomFactor))) @@ -985,7 +986,7 @@ extension SwiftyCamViewController { let translationDifference = currentTranslation - previousPanTranslation do { - let captureDevice = Self.defaultCaptureDevice() + let captureDevice = Self.defaultCaptureDevice(preferringPosition: currentCamera.captureDevicePosition) try captureDevice?.lockForConfiguration() let currentZoom = captureDevice?.videoZoomFactor ?? 0.0