我试图将动画放在UITableViewCell中。动画是onClick表视图单元格将tableCell的框架更改为tableview框架。
我有以下代码:
一种可能的解决方案是声明一个变量,它将保存扩展单元格的indexPath数组
// Will hold the indexPath of expanded cell var expandedCell : [IndexPath] = []
第二件事是添加和删除未扩展的单元格,为此你必须更新你的UITableView代表 didSelectRowAt
didSelectRowAt
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let index = expandedCell.firstIndex { (localIndexPath) -> Bool in return indexPath == localIndexPath } if let index = index { expandedCell.remove(at: index) } else { expandedCell.append(indexPath) } tableviewMessageList.reloadRows(at: [indexPath], with: .fade) }
最后,您必须添加另一个UITableView Delegate heightForRowAt 要返回单元格的高度,如果单元格的indexPath在数组中,它将返回扩展的大小,否则返回单元格的正常大小,如下所示: -
heightForRowAt
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { if expandedCell.contains(indexPath) { return tableView.frame.height } return 200.0 //NormalHeight }
注意:我的答案是在Swift中,但同样的原则将适用于Objective-C,您只需要更改语法。