如何使用Swift淡入/淡出tableviewcell的背景颜色

时间:2016-10-28 22:54:48

标签: ios uitableview uicolor

我有一个tableview,当我收到一条消息时,它重新加载,然后我希望收到消息的单元格改变其背景颜色一秒钟,然后改回以前的颜色(有或没有淡入/淡出)< / p>

我知道哪个单元格收到了带有该代码的消息:

    if changeCell == indexPath.row { 

         cell.viewCell.backgroundColor = UIColor.red 

    }

viewCell是一个视图,我放在单元格中更容易更改单元格的背景颜色

我经常搜索它,但是每个解决方案都以UIView.animate开头....当我把它改成了我的tableview之外的视图颜色

3 个答案:

答案 0 :(得分:2)

UIView动画系列方法就是你想要的。

    let oldColor = cell.viewCell.backgroundColor
    UIView.animate(withDuration: 0.5, animations: {
        cell.viewCell.backgroundColor = UIColor.red
        }, completion: { _ in
            UIView.animate(withDuration: 0.5) {
                cell.viewCell.backgroundColor = oldColor
            }
    })

答案 1 :(得分:2)

为动画添加以下选项:

  • UIViewAnimationOptions.transitionCrossDissolve
  • UIViewAnimationOptions.allowAnimatedContent

示例:

fileprivate var color1 = UIColor.clear
fileprivate var color2 = UIColor.red
fileprivate func animateCell(_ cell: UITableViewCell) {

    UIView.animate(withDuration: 1.0, delay: 0.0, options: [.transitionCrossDissolve, .allowAnimatedContent], animations: {
        cell.contentView.backgroundColor = self.color2
    }) { (_) in
        UIView.animate(withDuration: 1.0, animations: {
            cell.contentView.backgroundColor = self.color1
        })
    }

}

答案 2 :(得分:0)

我通过在单元格中添加UIImageView并设置其Alpha来解决此问题。我无法设置backgroundColor进行动画处理。