Avoid Animation of Uicollectionview After Reloaditemsatindexpaths

Avoid animation of UICollectionView after reloadItemsAtIndexPaths

It's worth noting that if you're targeting iOS 7 and above, you can use the new UIView method performWithoutAnimation:. I suspect that under the hood this is doing much the same as the other answers here (temporarily disabling UIView animations / Core Animation actions), but the syntax is nice and clean.

So for this question in particular...

Objective-C:

[UIView performWithoutAnimation:^{
[self.collectionView reloadItemsAtIndexPaths:indexPaths];
}];


Swift:

UIView.performWithoutAnimation {
self.collectionView.reloadItemsAtIndexPaths(indexPaths)
}


Of course this principle can be applied for any situation that you want to ensure a change is not animated.

Custom animation on UICollectionView reload data

u can make some trick like suggested here

+ (CATransition *)swipeTransitionToLeftSide:(BOOL)leftSide
{
CATransition* transition = [CATransition animation];
transition.startProgress = 0;
transition.endProgress = 1.0;
transition.type = kCATransitionPush;

transition.subtype = leftSide ? kCATransitionFromRight : kCATransitionFromLeft;
transition.duration = AnimationDuration;
return transition;
}

and add it to your collectionView

UISwipeGestureRecognizer *swipeGestureL = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(didSwipeToLeftCollectionView:)];
swipeGestureL.direction = UISwipeGestureRecognizerDirectionLeft;
[self.collectionView addGestureRecognizer:swipeGestureL];

- (void)didSwipeToLeftCollectionView:(UISwipeGestureRecognizer *)swipeGesture
{
[self.collectionView.layer addAnimation:[Animation swipeTransitionToLeftSide:YES] forKey:nil];
[self.collectionView reloadData];
}

result:

enter image description here



Related Topics



Leave a reply



Submit