ios swift方形照片取景器

ios swift square photo viewfinder

我正在 Swift 4/iOS 11/Xcode 9.1

中使用 AVFoundation 框架制作自定义相机视图控制器

我的 setUpCaptureSession 代码:(感谢 letsbuildthatapp.com 的 brian voong,我遵循了他的 IG/firebase 教程并广泛使用了他的作品!)

fileprivate func setupCaptureSession() {
    let captureSession = AVCaptureSession()

    //setup inputs
    let captureDevice = AVCaptureDevice.default(for: AVMediaType.video)

    do {
        let input = try AVCaptureDeviceInput(device: captureDevice!)
        if captureSession.canAddInput(input) {
            captureSession.addInput(input)
        }
    } catch let err {
        debugPrint(err)
    }
    //setup outputs

    if captureSession.canAddOutput(output) {
        captureSession.addOutput(output)
    }
    //setup output preview
    let previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
    previewLayer.frame = photoPreView.frame
    view.layer.addSublayer(previewLayer)

    captureSession.startRunning()

}

photoPreView 是我手动添加到故事板的视图,宽高比为 1:1。我的问题在下面的屏幕截图中可见:

捕获会话确实在 photoPreView.frame 内,但我希望捕获会话填满整个区域并放大,就像原生 iOS 相机的方形模式一样,或者Instagram 的照片捕捉方式也是如此。

在您的捕获层上,您应该设置...

previewLayer.videoGravity = .resizeAspectFill