¿Cómo rotar un UICollectionView similar a la aplicación de fotos y mantener la vista actual centrada?

Tengo una vista de galería de fotos que utiliza unUICollectionView con unUICollectionViewFlowLayout, TienepagingEnabled y se desplaza horizontalmente mostrando solo una vista a la vez.

Funciona muy bien hasta que intento rotarlo ...

Cuando gire el dispositivo, enwillRotateToInterfaceOrientation:duration: Actualizo elcollectionView.contentOffset por lo que permanece en el elemento correcto y redimensiono el currentCell para que se anime en las nuevas dimensiones.El problema está en la animación entre los dos estados, la orientación 'anterior' animadesde la esquina superior izquierda Y arroja a la vista otras celdas. ¿Qué es lo que estoy haciendo mal de modo que la vista que se está animando desde la pantalla es FUBAR?

Esto es lo que parece en acción:

http://www.smugmug.com/gallery/n-3F9kD/i-BwzRzRf/A (ignora el video entrecortado, eso es culpa de Quicktime: p)

Aquí está miwillAnimateRotationToInterfaceOrientation:duration:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
[super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];

// Update the flowLayout's size to the new orientation's size
UICollectionViewFlowLayout *flow = (UICollectionViewFlowLayout *)self.collectionView.collectionViewLayout;
if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) {
    flow.itemSize = CGSizeMake(self.collectionView.frame.size.width, self.collectionView.frame.size.height);
} else {
    flow.itemSize = CGSizeMake(self.collectionView.frame.size.width, self.collectionView.frame.size.height);
}
self.collectionView.collectionViewLayout = flow;
[self.collectionView.collectionViewLayout invalidateLayout];

// Get the currently visible cell
PreviewCellView *currentCell = (PreviewCellView*)[self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForRow:_currentIndex inSection:0]];

// Resize the currently index to the new flow's itemSize
CGRect frame = currentCell.frame;
frame.size = flow.itemSize;
currentCell.frame = frame;

// Keep the collection view centered by updating the content offset
CGPoint newContentOffset = CGPointMake(_currentIndex * frame.size.width, 0);
self.collectionView.contentOffset = newContentOffset;
}

Que yo sepa, no puedo encontrar ningún código de ejemplo en ninguna parte que ilustre cómo hacer una vista de colección de estilo de "galería de fotos" que gire con gracia.

Respuestas a la pregunta(3)

Su respuesta a la pregunta