在控制器中使用CADisplayLink在TableViewCells中运行动画

时间:2018-07-15 19:50:26

标签: swift uitableview animation tableview cadisplaylink

我已经能够for i, result in enumerate(res.results): print(result.text) if i > 2: break CADisplayLink中运行进度条动画。我将整个动画写在自定义单元文件中。这是代码:

TableViewCells

没有重复使用单元格时,动画效果很好。

enter image description here

但是,当我滚动并重新使用单元格时,动画就会陷入混乱。我知道此类计时器需要在控制器中实现。如果您有override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) contentView.addSubview(timeRemainingView) contentView.addSubview(testlabel) contentView.bringSubviewToFront(testlabel) contentView.backgroundColor = .white let displayLink = CADisplayLink(target: self, selector: #selector(handleProgressAnimation)) displayLink.add(to: .main, forMode: .defaultRunLoopMode) setupViews() } var animationDuration = 60.0 //Just initialization value let animationStartDate = Date() @objc func handleProgressAnimation() { let currenttime = Date() let elapsed = currenttime.timeIntervalSince(animationStartDate) // do your animation logic here let percentage = elapsed / animationDuration timeRemainingView.frame.size.width = CGFloat(400 - (400 * percentage)) if (percentage >= 1 ) { self.timeDurationCompleted() } } ,我只需要一些帮助。每个CADisplayLink都有自定义时间,我可以通过控制器中的cellforrow设置该时间:

TableviewCell

durationTime只是一个整数数组,所有时间都以秒为单位。

我该如何通过控制器的CADisplayLink计时器实现这种动画,从而克服单元重用问题。

0 个答案:

没有答案