我已经创建了一个customlayout并在layoutAttributesForItemAtIndexPath中设置了我的单元格位置属性,就像这样
attributes.center = CGPointMake((size.width/2 - 100) + 100, (size.height/2 - 150) +100);
我想在选中单元格时为其设置动画。复制我们使用initialLayoutAttributesForAppearingItemAtIndexPath
& finalLayoutAttributesForDisappearingItemAtIndexPath
。
我想在选择和取消选择单元格时执行此操作。
所以例如:
单元格A位于0,0
位置。单元格B处于50,100
的位置。如果我选择单元格B,我想将其设置为0,0
。同时将单元格A设置为50,100
的动画。基本上切换位置,但动画。
答案 0 :(得分:1)
也许是一种不同的方法。只需覆盖collectionViewCell中的isSelected。
override var isHighlighted: Bool {
didSet {
if isHighlighted {
UIView.animate(withDuration: 0.2, delay: 0, options: .curveEaseOut, animations: {
// animate highlight
}, completion: nil)
} else {
UIView.animate(withDuration: 0.2, delay: 0, options: .curveEaseOut, animations: {
// animate unHighligh
}, completion: nil)
}
}
}
在这篇文章UICollectionView: Animate cell size change on selection中,您可以看到有关如何设置尺寸更改动画的示例。
答案 1 :(得分:0)
我通过在UICollectionViewDelegate中使用didSelectItemAtIndexPath来设置属性的动画:
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
[_collectionView.collectionViewLayout invalidateLayout];
UICollectionViewLayoutAttributes *newAttributes = [_collectionView layoutAttributesForItemAtIndexPath:indexPath];
//use new attributes for animation
}