gpt4 book ai didi

ios - 如何使用UIImages数组为CALayer的contents属性设置动画?

转载 作者:行者123 更新时间:2023-12-01 18:41:04 25 4
gpt4 key购买 nike

我想使用UIImageView的contents属性为放置在CALayer上的蒙版制作动画。不幸的是我目前的实现
似乎只是在数组的第一个和最后一个图像之间进行动画处理,而无需在过渡之间传递。有什么办法可以做到这一点,还是我应该看看CAReplicatorLayer这样的东西?

这是我目前拥有的:

        let mask = CALayer()
mask.frame = self.frame
self.layer.mask = mask
mask.contents = transitions.first?.cgImage

let maskAnimation = CABasicAnimation(keyPath: "contents")
maskAnimation.fromValue = transitions.first?.cgImage
maskAnimation.toValue = transitions.last?.cgImage
maskAnimation.duration = duration
mask.contents = transitions.last
mask.add(maskAnimation, forKey: "ContentsAnimation")

最佳答案

动画系统并不神奇地知道在第一张和最后一张图像之间进行插值的含义。您必须明确地告诉它。这正是关键帧动画的用途。

这是一个由我的项目构成的动画的示例:

    let anim = CAKeyframeAnimation(keyPath:#keyPath(CALayer.contents))
anim.values = self.images.map {$0.cgImage!}
anim.keyTimes = [0.0, 0.25, 0.5, 0.75, 1.0]
anim.calculationMode = kCAAnimationDiscrete
anim.duration = 1.5

如您所见,我们有一系列图像;它们是UIImages,所以我必须派生它们的CGImage支持(我假设您的 transitions是相似的)。 keyTimes数组用于将 duration分成帧;由于动画的性质,我在进行这种划分时有些奇怪,因此请随时确定时间以平均划分持续时间。

关于ios - 如何使用UIImages数组为CALayer的contents属性设置动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43051178/

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