Swift - 选择时的 UITableView 单元格动画

Swift - UITableView Cell animation on selection

我正在使用 didSelectRow at 方法对 tableView 单元格选择进行动画处理,该方法正在运行。我的代码如下:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

let cell = tableView.cellForRow(at: indexPath)
            
            UIView.animate(withDuration: 0.2, animations: {
                
                cell!.transform = CGAffineTransform(scaleX: 0.97, y: 0.97)
                
            }, completion: { finished in
                
                UIView.animate(withDuration: 0.2) {
                    
                    cell!.transform = .identity
                }
                
            })

}

我希望能够将其放入单元格的自定义 class 文件中,但不知道从哪里开始。这可能吗?

谢谢

我想你可以使用 func setSelected(_ :animated:)

首先,您必须创建 UITableViewCell 的子类。

假设我创建了一个Class名字TempTableViewCell,在这个里面,我们确实有一个预定义函数override func setSelected(_ selected: Bool, animated: Bool)

此处 Selected 是单元格是否被选中的值。所以你可以在这个函数中使用你的代码,如下所示。

示例

class TempTableViewCell: UITableViewCell {

override func awakeFromNib() {
    super.awakeFromNib()
}

override func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)
    if selected{
        UIView.animate(withDuration: 0.2, animations: {
            self.transform = CGAffineTransform(scaleX: 0.97, y: 0.97)
        }, completion: { finished in
            UIView.animate(withDuration: 0.2) {
                self.transform = .identity
            }
        })
    }
}

}

并按照下面的代码在单元格中使用它,

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: TempTableViewCell.self), for: indexPath)
    return cell
}