簡體   English   中英

iPhone 11 Pro 上的超廣角攝像頭問題

[英]Ultra wide camera issue on iPhone 11 Pro

我正在構建一個自定義相機,我希望允許用戶在超廣角相機、廣角相機和長焦相機之間切換,就像默認相機應用程序一樣,但我一直面臨一些奇怪的問題,我將嘗試展示以下:

ios相機應用

自定義相機圖片

第一張圖片是使用 iOS 默認相機應用程序拍攝的,第二張是使用我的自定義相機應用程序拍攝的。 在我看來,當我從廣角相機切換到超廣角相機時,我沒有正確安裝AVCaptureVideoPreviewLayer 問題是:我不確定我應該怎么做,所以你們能給我一個關於如何解決它的線索嗎?

我還有一個視頻,它顯示了我的自定義應用程序中相機之間的轉換,但我無法在此處上傳。

這是我在相機之間切換的代碼部分:

if let device = AVCaptureDevice.default(.builtInUltraWideCamera, for: .video, position: .back) {
                    currentCameraDevice = device
                    changeCameraDevice()
                }
            }
    private func changeCameraDevice() {
        guard captureSession.isRunning else { return }
        captureSession.beginConfiguration()
        
        guard let view = (view as? UIViewController)?.view else { return }
        guard let device = currentCameraDevice else { return }
        guard let input = try? AVCaptureDeviceInput(device: device) else { return }
        captureSession.inputs.forEach { captureSession.removeInput($0) }
        captureSession.addInput(input)
        captureSession.commitConfiguration()
        captureSession.startRunning()
        viewDidLayoutSubviews(view)
    }

這是我將預覽層插入視圖層堆棧的位置:

view.layer.insertSublayer(layer, at: index)

其中layerAVCaptureVideoPreviewLayer

我已經找到了這個問題,所以無論誰在未來偶然發現這個問題。 我正在設置videoGravity =.resizeAspectFill ,但是當使用超寬相機時它不能正常工作。 為了修復它,您所要做的就是刪除此行或設置videoGravity =.resizeAspect

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM