是因为UITableView的重用机制导致的。
UITableView使用了重用机制来提高性能和内存使用效率。当滚动时,UITableView会将滚出屏幕的UITableViewCell放入重用队列中,以便在需要时重新使用。当滚动停止并且需要显示新的UITableViewCell时,UITableView会从重用队列中取出一个可用的UITableViewCell,并将其添加到可见区域。
当一个UIView被添加到UITableViewCell中,并且该UITableViewCell被滚出屏幕并放入重用队列后,UIView上的动画会停止。这是因为当UITableViewCell被重用时,UIView的状态也会被重置,包括动画的状态。因此,当UITableViewCell重新出现时,动画会停止。
为了解决这个问题,可以在UITableViewCell的重用方法中重新启动动画。可以在UITableViewCell的prepareForReuse方法中停止动画,并在cellForRowAtIndexPath方法中重新启动动画。具体实现如下:
class CustomTableViewCell: UITableViewCell {
var customView: UIView!
override func prepareForReuse() {
super.prepareForReuse()
// 停止动画
customView.layer.removeAllAnimations()
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) as! CustomTableViewCell
// 配置UITableViewCell
// 重新启动动画
cell.customView.startAnimating()
return cell
}
这样,在UITableViewCell重新出现时,动画就会继续播放。
领取专属 10元无门槛券
手把手带您无忧上云