gpt4 book ai didi

swift - 当 UIView 重新出现在滚动的 UITableView 上时动画停止

转载 作者:行者123 更新时间:2023-11-28 13:52:42 25 4
gpt4 key购买 nike

我有一个旋转的 UIView 来显示 UITableView 的每个单元格中的进度,我正在使用这个函数来为 UIView 设置动画:

func rotate360Degrees(duration: CFTimeInterval = 1.0) {
let rotateAnimation = CABasicAnimation(keyPath: "transform.rotation")
rotateAnimation.fromValue = 0.0
rotateAnimation.toValue = CGFloat.pi * 2
rotateAnimation.duration = duration
rotateAnimation.repeatCount = Float.infinity
self.layer.add(rotateAnimation, forKey: nil)
}

当单元格首先出现时它工作正常但是当您滚动 UITableView 并且单元格消失并且之后它们通过再次滚动显示时,它们的动画停止了。重新出现后,我尝试再次为他们调用该方法,但没有用。我的代码有什么问题?

最佳答案

UITableViewCell 对象是可重用的,您需要在 prepareForReuse: 中恢复动画或 tableView(_:willDisplay:forRowAt:)方法。

func getRotate360DegreesAnimation(duration: CFTimeInterval = 1.0) -> CABasicAnimation {
let rotateAnimation = CABasicAnimation(keyPath: "transform.rotation")
rotateAnimation.fromValue = 0.0
rotateAnimation.toValue = .pi * 2
rotateAnimation.duration = duration
rotateAnimation.repeatCount = .infinity
return rotateAnimation
}

func restoreAnimation() {
let animation = getRotate360DegreesAnimation()
layer.removeAllAnimations()
layer.add(animation, forKey: nil)
}

关于swift - 当 UIView 重新出现在滚动的 UITableView 上时动画停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54356406/

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