gpt4 book ai didi

ios - 放大 "didSelectItemAt"上的 UICollectionViewCell

转载 作者:行者123 更新时间:2023-11-28 06:12:39 25 4
gpt4 key购买 nike

我需要实现一个看起来像附加 gif 的动画。

当您点击一个单元格时,它应该放大,因此单元格之间的间距应该保持不变(单元格不应该重叠)。当您选择另一个单元格时,当前选定的单元格动画到原始大小,新选择的单元格放大同时。

目前,当用户选择我正在为 UICollectionView 调用重新加载的单元格时,在 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
}
}

还有其他方法吗?

Sample Animation

注意

上面的动画我是用 UIScrollView 完成的,但我想用 UICollectionView 做同样的事情。

最佳答案

在您的自定义 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

关于ios - 放大 "didSelectItemAt"上的 UICollectionViewCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46098693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com