Jak obrócić UICollectionView podobną do aplikacji do zdjęć i zachować bieżący widok?

Mam widok galerii zdjęć, który używaUICollectionView zUICollectionViewFlowLayout, to mapagingEnabled i przewija w poziomie pokazując tylko jeden widok naraz.

Działa świetnie, dopóki nie spróbuję go obrócić ...

Kiedy obracam urządzenie, wwillRotateToInterfaceOrientation:duration: AktualizujęcollectionView.contentOffset tak więc pozostaje na właściwym elemencie i zmieniam rozmiar obecnej komórki, tak aby zmieniała się w nowe wymiary.Problem polega na animacji między dwoma stanami, animacja „poprzedniej” orientacjiz lewego górnego rogu I rzuca do widoku inne komórki. Co robię źle, tak że widok animowany poza ekranem to FUBAR?

Oto jak to wygląda w akcji:

http://www.smugmug.com/gallery/n-3F9kD/i-BwzRzRf/A (zignoruj ​​przerywany film, czyli błąd Quicktime: p)

Tutaj jest mójwillAnimateRotationToInterfaceOrientation: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;
}

O ile mi wiadomo, nie mogę znaleźć żadnego przykładowego kodu, który ilustruje sposób tworzenia widoku kolekcji w stylu „galerii zdjęć”, który obraca się z wdziękiem.

questionAnswers(3)

yourAnswerToTheQuestion