首页 > 解决方案 > UITableViewCell 删除动画透明

问题描述

我有一个渐变作为我的应用程序的背景。我在顶部添加了一个表格视图,它具有清晰的背景。单元格没有背景,标题有半透明背景(白色,20% alpha)。

我正在使用insertRowsAtIndexPaths:withRowAnimation:deleteRowsAtIndexPaths:withRowAnimation:创建可扩展/可折叠的容器。问题是,因为我有透明度,当我用户点击隐藏单元格时,UITableViewRowAnimationTop越过部分标题,只有在动画完成后才会消失,这非常令人困惑。

我该如何解决这个问题?有没有办法创建自定义UITableViewRowAnimation

谢谢!

标签: iosuitableviewcocoa-touch

解决方案


我找到了一种解决方法,它基于在alpha单元格删除动画时将值设置为零(动画)。使用这种方法,被删除的单元格在被下一个单元格重叠的同时淡出。

基本上,您需要参考要在特定时间删除的确切单元格。然后你只需调用:

UIView.animate(withDuration: 0.2, animations: {
    cell.alpha = 0.0
})

不要忘记将您的alpha属性重置为,1.0因为该视图可能会被重复使用。我在我的自定义UITableViewCell单元子类中这样做:

override func prepareForReuse() {
    super.prepareForReuse()
    // Reset alpha because we're setting it to zero on cell removal        
    alpha = 1.0
}

推荐阅读