gpt4 book ai didi

swift - 如何捕获 CAAnimation

转载 作者:行者123 更新时间:2023-11-30 12:00:39 26 4
gpt4 key购买 nike

我想在CALayer上捕获动画的每一帧以生成mp4电影文件。

所以,我在下面编写了代码。

frames 是动画中的总帧数,frameTime 是 1/60 秒,animationLayer 已经添加到 上UIImageView.

for i in 0...(frames - 1) {

//add the animation on specified frame to the CALayer
animationGroup.speed = 0
animationGroup.timeOffset = frameTime * i
animationLayer.add(animationGroup, forKey: "morph")

//capture the frame of the animation.
UIGraphicsBeginImageContextWithOptions(drawView.bounds.size, true, 0.0)
drawView.drawHierarchy(in: drawView.bounds, afterScreenUpdates: true)
uiImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()

uiImage = globalFunc.resizeUIImage(uiImage, scale, 400)
cgImage = uiImage.cgImage!

//add the captured image to movie file.
movieCreator.create(image: cgImage)

animationLayer.removeAnimation(forKey: "moprh")
}

此代码不起作用。

每帧的图像不显示,并且创建了电影文件,但没有动画。

我在上面的代码中尝试了 DispatchQueue.main.asycCAtransition.begin(), .setCompletionBlock, .commit(),但它们不起作用。

我应该怎样做才能得到我想要的东西?

最佳答案

您不应将 View 层次结构绘制到图像上下文中。您应该像这样渲染表示层:

if let presentationLayer = drawView.layer.presentation() {
presentationLayer.render(in: context)
}

表示层代表当前在屏幕上绘制的层的内容。

关于swift - 如何捕获 CAAnimation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47279287/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com