高度变化时,UITableViewCell闪烁

时间:2019-02-07 06:54:07

标签: ios swift uitableview

我将自动Layout单元格用于自动height计算。当我更改像元高度约束之一时,分别为beginUpdates()调用endUpdates()UITableView,所有内容都将正确重建,但是动画无法按照我想要的方式工作-我希望单元的高度只需增加即可,而不会闪烁和移动其上部。它可能取决于什么?

我将GIF附加到我现在动画的错误位置。 https://vk.com/doc19187792_491076127

1 个答案:

答案 0 :(得分:0)

您可以为Cell类编写扩展,添加一些动画,并在命中时添加您的单元格。此外,您还应为此写一个完成代码块,当动画结束时,将调用at处的行高。

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

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()
    }
}
}