swift - 禁用相机视图增长动画
问题描述
目前,我有一个 vie 控制器,它以模态方式呈现一个包含相机的视图控制器。但是,每当我转换时,预览层都会有一个动画,因此它会从左上角循环增长以填充屏幕的其余部分。我尝试禁用 CALayer 隐式动画但没有成功。这是视图出现时的代码。
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:
解决方案
当您更改图层框架时,会有一个隐式动画。您可以使用CATransaction
来禁用动画。
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
CATransaction.begin()
CATransaction.setDisableActions(true)
previewLayer?.frame = self.view.frame
CATransaction.commit()
}
推荐阅读
- snowflake-cloud-data-platform - 雪花中修改的用户输入值
- javascript - React Native 未处理的承诺拒绝 | React-Native,异步,
- wordpress - 如何连接 wordpress install 和 cli docker
- python - 检查列表中的值是否与列匹配时出错
- r - 是否有在 R 中打印 PDF(到打印机)的功能?
- java - 在只是实例变量副本的方法中创建局部变量有什么好处?
- python - python中多个CSV的堆积条形图
- python - Pandas - 布尔值条件语句未在函数中拾取
- javascript - 当我在 Storybook 中渲染组件时,为什么我的导入显示为未定义?
- javascript - 您可以仅定位导航中的链接以使用 swupjs 进行转换吗?