Basically you need to do three steps
1.invalidate the collectionViewLayout
2.perform batch updates:
...
//invalidate layout
[collectionView performBatchUpdates:^{
// make your cell at indexPath return a new size
} completion:^(BOOL finished) {
}];
3.return the new size at sizeForItemAtIndexpath