ios - UITableViewCell 高度变化时闪烁
问题描述
我使用自动计算的自动Layout
单元格。height
当我更改其中一个单元格高度约束时,调用beginUpdates()
和endUpdates()
,UITableView
一切都正确重建,但动画无法按我想要的方式工作 - 我希望单元格的高度简单地增加,而不闪烁和移动其上部. 它可能取决于什么?
我附上 GIF,说明我现在制作动画是多么错误。 https://vk.com/doc19187792_491076127
解决方案
您可以为您的 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()
}
}
}
推荐阅读
- python - 选择额外元素的 HTML 页面的子选择上的 XPath?
- sql - 为另一列的每个值选择一列的顶部 1
- python - 使用公共列映射两个数据框
- hibernate - 使用 org.geolatte.geom 构造 LineString
- jenkins - 如何在脚本化的詹金斯管道中定义全局变量
- url - 基于 URL Param 的动态方法调用
- java - 带有 Liberica 的 RaspberryPi 4 中的 JavaFX(无法打开显示,无法创建资源)
- python - 在 ManyToManyField 中显示朋友
- r - R:找不到符号:_libintl_dgettext
- fortran - Fortran中随机数据的半高全宽