如何减少点击单元格和某些代码的 运行 之间的时间量?

How to reduce the amount of time between a tap on a cell and the running of certain code?

我有下面的代码,它成功地导致 collectionView 中的一个单元格在点击时按下。

问题是在抑郁症发生之前必须坚持很长时间。不要误会我的意思。它只有大约 1 秒,但如果你将该速度与 snapchat 的速度进行比较,你可以清楚地看到 snapchat 的速度几乎是即时的。

func collectionView(_ collectionView: UICollectionView, didHighlightItemAt indexPath: IndexPath) {

     UIView.animate(withDuration: 0.1, animations: {

         collectionView.cellForItem(at: indexPath)!.transform = CGAffineTransform.identity.scaledBy(x: 0.95, y: 0.95)

      })
 }

问题:我怎样才能为每个单元格制作这个动画,即时或接近它,就像 snapchat?

更新:

好像是这样做的:

func collectionView(_ collectionView: UICollectionView, didHighlightItemAt indexPath: IndexPath) {

    UIView.animate(withDuration: 0.1, animations: {

        collectionView.cellForItem(at: indexPath)!.transform = CGAffineTransform.identity.scaledBy(x: 0.95, y: 0.95)

    }) { (true) in

        UIView.animate(withDuration: 0.1, animations: {

            collectionView.cellForItem(at: indexPath)!.transform = CGAffineTransform.identity.scaledBy(x: 1, y: 1)

        })

    }

}

如果有人想要一些基本的东西,这是一个选择。

如果你想要即时性,你可以在自定义 UICollectionViewCell

的 touchesBegan 和 touchesEnded/touchesCanceled 方法中来回转换

在界面生成器中禁用 collectionView 内容触摸延迟:

或在代码中:

myCollectionView.delaysContentTouches = false

提示:启用此动画的 .beginFromCurrentState 选项将使它看起来更流畅且反应灵敏。来自 beginFromCurrentState 上的 Apple 文档:

Start the animation from the current setting associated with an already in-flight animation.

UIView.animate(withDuration: 0.1, delay: 0, options: [.beginFromCurrentState], animations: { 
}) { finished in 
}