首页 > 解决方案 > UITableViewCell 高度变化时闪烁

问题描述

我使用自动计算的自动Layout单元格。height当我更改其中一个单元格高度约束时,调用beginUpdates()endUpdates()UITableView一切都正确重建,但动画无法按我想要的方式工作 - 我希望单元格的高度简单地增加,而不闪烁和移动其上部. 它可能取决于什么?

我附上 GIF,说明我现在制作动画是多么错误。 https://vk.com/doc19187792_491076127

标签: iosswiftuitableview

解决方案


您可以为您的 Cell 类编写扩展并添加一些动画,并在每次点击时添加您的单元格。您还应该为此编写一个完成块,当您的动画完成时,调用行的高度。

这不是您的完整解决方案,但您可以进行编辑以便解决您的问题。

extension UIView {

func glow(_ completion: @escaping () -> ()){

    let opacity = CASpringAnimation(keyPath: "opacity")
    let pulse = CASpringAnimation(keyPath: "transform.scale")
    let group = CAAnimationGroup()

    pulse.fromValue = 0.4
    pulse.toValue = 1

    opacity.fromValue = 0
    opacity.toValue = 0.65

    group.animations = [pulse, opacity]
    group.duration = 1.1
    group.timingFunction = CAMediaTimingFunction(name: .easeOut)
    group.autoreverses = false
    group.repeatCount = 0

    layer.add(group, forKey: nil)

    DispatchQueue.main.asyncAfter(deadline: .now()+1) {
        completion()
    }
}
}

推荐阅读