如何减少点击单元格和某些代码的 运行 之间的时间量?
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
}
我有下面的代码,它成功地导致 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
}