我需要实现一个看起来像附加的gif的动画。
当您点击一个单元格时,它应该放大,因此单元格之间的间距应保持不变(单元格不应重叠)。当您选择另一个单元格时,当前选定的单元格将设置为原始大小,新选择的单元格将放大同时。
目前,当用户选择我正在为UICollectionView调用reload的单元格时,在 cellForItemAtIndex 中,我使用“CGAffineTransform.scale”保留一些延迟来为图像设置动画。
但是通过这种方法,我没有得到想要的动画,有明显的闪烁。
func animateTheCellOnTapping(cell:RatingFeedbackCell, indexPath:IndexPath) {
cell.overlayView.transform = CGAffineTransform.identity
UIView.animate(withDuration: 0.2, animations: {
if indexPath == self.selectedIndex {
cell.imagesContainerView.transform = CGAffineTransform(scaleX: 1.1, y: 1.1)
}
})
if indexPath != selectedIndex {
cell.imagesContainerView.transform = CGAffineTransform.identity
}
}
还有其他办法吗?
注意
上面的动画我用UIScrollView完成了,但我想用UICollectionView做同样的事情。
答案 0 :(得分:1)
在自定义UICollectionViewCell
- RatingFeedbackCell
中,覆盖 isSelected
属性并在那里执行动画。单元格的选择和取消选择将自动处理,无需任何额外的努力。
示例:强>
class RatingFeedbackCell : UICollectionViewCell
{
override var isSelected: Bool{
didSet{
UIView.animate(withDuration: 0.3, delay: 0.0, options: .curveEaseOut, animations: {
self.transform = self.isSelected ? CGAffineTransform(scaleX: 1.1, y: 1.1) : CGAffineTransform.identity
}, completion: nil)
}
}
}
isSelected
如何运作,请参阅:https://medium.com/@p.gpt10/uicollectionviewcell-selection-made-easy-41dae148379d