swift - 禁用相机 View 增长动画

标签 swift avcapturesession

目前,我有一个 vie Controller ,它以模态方式呈现一个包含相机的 View Controller 。但是,每当我转换时,预览层都有一个动画,因此它从左上角循环增长以填充屏幕的其余部分。我试过禁用 CALayer 隐式动画但没有成功。这是 View 出现时的代码。

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    previewLayer?.frame = self.view.frame
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    capturedImageView.center = self.view.center
    captureSession = AVCaptureSession()
    if usingFrontCamera == true {
    captureSession?.sessionPreset = AVCaptureSession.Preset.hd1920x1080
    }
    else {
    captureSession?.sessionPreset = AVCaptureSession.Preset.hd1280x720
    }

    captureDevice = AVCaptureDevice.default(for: AVMediaType.video)


    do {
        let input = try AVCaptureDeviceInput(device: captureDevice!)

        if (captureSession?.canAddInput(input) != nil) {
            captureSession?.addInput(input)

            stillImageOutput = AVCapturePhotoOutput()

            captureSession?.addOutput(stillImageOutput!)
            previewLayer = AVCaptureVideoPreviewLayer(session: captureSession!)
            previewLayer?.videoGravity = AVLayerVideoGravity.resizeAspect
            self.view.layer.addSublayer(previewLayer!)
            captureSession?.startRunning()


        }


    } catch {

    }
}

有没有办法删除这个不断增长的动画?这是问题的 gif:

GIF of animation

最佳答案

当你改变图层框架时,有一个隐式动画。您可以使用 CATransaction 来禁用动画。

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    CATransaction.begin()
    CATransaction.setDisableActions(true)
    previewLayer?.frame = self.view.frame
    CATransaction.commit()
}

关于swift - 禁用相机 View 增长动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55643640/

相关文章:

ios - AVAssetWriter 错误代码无法创建文件

iphone - iOS : camera orientation

iphone - iPhone 3gs 的 AVCaptureSession 仅获取一帧

Swift 3.0 和 Alamofire post 数组

swift - 如何在 Vapor 3 中进行第三方 api 调用?

ios - Swift:GM Xcode 6.1 和 AFNetworking AFJSONResponseSerializer

ios - Apple 的 AVCamera 照片捕捉

ios - 标签栏 Controller : Going Tab-To-Tab - fatal error: Array index out of range

swift - 无法使用类型为 (Int, @value Int) 的参数列表调用 "+="

ios - AVCaptureMovieFileOutput - 没有事件/启用的连接