假设我有一些简单的Tableview动画代码。有没有办法将此应用到项目中的每个表视图?我当前的项目很大,每个文件夹都有单独的VC和情节提要。有什么方法可以普遍应用更改?
floats
答案 0 :(得分:1)
第一个可能的解决方案是创建协议。创建协议,然后对其进行扩展,并声明使您的单元动画的方法
protocol CellAnimating where Self: UITableViewDelegate {}
extension CellAnimating {
func animateCell(_ cell: UITableViewCell) {
cell.alpha = 0
let transform = CATransform3DTranslate(CATransform3DIdentity, 0, 200, 0)
cell.layer.transform = transform
UIView.animate(withDuration: 1, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseOut, animations: {
cell.alpha = 1
cell.layer.transform = CATransform3DIdentity
})
}
}
然后在要使用此控制器的位置查看控制器,只需实现此协议,并在willDisplay
内部调用此方法
class ViewController: UIViewController, UITableViewDelegate {
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
...
animateCell(cell)
...
}
}
extension ViewController: CellAnimating {}
我想到的第二个选择是,您可以创建UIViewController
的子类,然后在委托方法willDisplay
中声明一些内容
class ViewController: UIViewController, UITableViewDelegate {
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
...
}
}
然后只需将每个要使用的视图控制器设置为ViewController
的子类