gpt4 book ai didi

ios - 如何消除我的 CABasicAnimation 中的 "jump"?

转载 作者:可可西里 更新时间:2023-11-01 00:43:25 25 4
gpt4 key购买 nike

使用这段代码:

func rotateTheView(_ aView: UIView, inClockwiseDirection isClockwise: Bool) {
let multiplier = (isClockwise ? 1 : -1)
let key = (isClockwise ? "Spin" : "Rotate")
var rotation: CABasicAnimation?
rotation = CABasicAnimation(keyPath: "transform.rotation")
rotation!.fromValue = Int(0)
let multiplicand = multiplier * 2
rotation!.toValue = Int(Double(multiplicand) * .pi)
rotation!.duration = 30 // Speed
rotation!.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
rotation!.repeatCount = HUGE //HUGE_VALF Repeat forever.
aView.layer.add(rotation!, forKey: key)
}

我得到了我想要的动画。 (一个轮子旋转,或者一个细胞在相反的方向上旋转得足够快以始终保持正确的正面朝上)。

但是,当 30 秒(持续时间)结束时,会出现闪烁,因为 View 会跳回动画之前的样子。

我知道它应该以这种方式工作。

如何将旋转应用于“之前”图像,以便在持续时间到期时我看不到任何单元格跳跃?

增加动画的持续时间会减慢轮子的旋转速度,因此这不是一个合适的解决方案。

如果#22521690适用,我不明白如何 - 我没有明确的 CATransaction。

最佳答案

尝试

rotation!.toValue = Double(multiplicand) * .pi

代替

rotation!.toValue = Int(Double(multiplicand) * .pi)

问题在于由于 Int 转换而丢失的弧度精度。

关于ios - 如何消除我的 CABasicAnimation 中的 "jump"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42190890/

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