UICollectionView : animation custom layout

后端 未结 1 496
刺人心
刺人心 2020-12-29 15:52

I\'m displaying lots of image cells in an UICollectionView. With one button I would like to be able to group all my cell over the first one.

This is working well but

1条回答
  •  生来不讨喜
    2020-12-29 16:27

    Animations won't work from within the method you are calling them from.

    To change the layout and animate to a new one, the simplest method is to call performBatchUpdates on your collection view, with nil for each block parameter. This invalidates your layout and animates to the new one for you.

    Before doing this, you'd tell the layout object that you want the new layout to occur. Also, inside layoutAttributesForElementsInRect, simply check your Boolean variable and apply the grouped frame (probably center would be better) to all attributes as you are doing now, but without animation. You'll also need to reproduce this code in layoutAttributesForElementAtIndexPath.

    So, in summary:

    1. Remove your invalidate layout call from where it is
    2. Remove the animation calls from where they are, just amend the layout attributes
    3. Add ..forElementAtIndexPath code as well
    4. In your view controller, call the regroup method on the layout object, then call performBatchupdates on the collection view.

    0 讨论(0)
提交回复
热议问题