在自定义相机中添加过渡

时间:2019-01-09 07:26:43

标签: ios camera swift4 uiviewanimationtransition

我正在实现自定义相机。 一切运行正常。 我想在从前向后切换时添加过渡,反之亦然。 这是我的代码。

      @IBAction func switchCamera(_ sender: Any) {

        captureSession.beginConfiguration()
        let newDevice = (currentDevice?.position == AVCaptureDevice.Position.back) ? frontCamera : backCamera
        for input in captureSession.inputs {
            captureSession.removeInput(input as! AVCaptureDeviceInput)
        }
        let cameraInput:AVCaptureDeviceInput
        do {
            cameraInput = try AVCaptureDeviceInput(device: newDevice!)
        } catch {
            print(error)
            return
        }
        if captureSession.canAddInput(cameraInput) {
            captureSession.addInput(cameraInput)
        }
        currentDevice = newDevice
        captureSession.commitConfiguration()
    }

我想添加以在切换相机侧面时添加平滑的动画。(类似于我们从一个ViewController导航到另一个ViewController的方式。)

我该如何实现?

2 个答案:

答案 0 :(得分:0)

您可以在摄像机视图后面使用UIView,并使用清晰的背景色,然后在将摄像机从后切换到前或反之时向该视图添加过渡。通过声明UIView的@IBOutlet或以编程方式进行此操作,然后在开关上使用它:希望它会有所帮助。

UIView.transition(with: yourView,
                     duration: 0.5,
                     options: [.transitionFlipFromRight], // change type accordingly
                     animations: {

                       // do your stuff
   },
                     completion: nil)

答案 1 :(得分:0)

用“ capturePreviewView”替换ImageCapturingView

 UIView.transition(with: capturePreviewView, duration: 0.5, options: [.transitionFlipFromLeft, .allowAnimatedContent], animations: nil) { (finished) in
   //Code

    }

在mainQueue中执行任何UI更改