Я пытаюсь осуществить фотогалерею с помощью UICollectionView
. Настройка похожа на ту, что находится в этом tutorial: Ячейки размером с коллекционный вид, так что вы увидите одно изображение за раз. Пейджинг включен, поэтому вы просматриваете изображение галереи по изображению. Пока все работает нормально.scrollToItemAtIndexPath не работает должным образом
Я также хочу сохранить эту настройку, когда устройство повернуто к ландшафту. Он отлично работает в отношении размера ячейки/изображения. Но, как описано в вышеупомянутом учебном пособии, представление коллекции поворачивается в какое-то странное положение между двумя картинками.
Моя цель - получить представление коллекции для отображения одной и той же ячейки после поворота, как показано перед вращением. Как и в этом post.
Моя попытка решить эту проблему:
Перед поворотом я экономлю на indexpath
текущего видимого элемента собственности следующим образом:
-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
NSArray *visibleItems = [self.galleryCollectionView indexPathsForVisibleItems];
self.currentIndexPath = [visibleItems lastObject];
[self.galleryCollectionView.collectionViewLayout invalidateLayout];
}
И после поворота я стараюсь, чтобы перейти к что такой элемент:
-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
[self.galleryCollectionView scrollToItemAtIndexPath:self.currentIndexPath atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally animated:YES];
}
К сожалению, это работает только для первых двух предметов в Если я прокручу, скажем, пятый элемент и поверните устройство, он снова повернется в какую-то странную позицию между ячейками.
Любые идеи, что я делаю неправильно?
Я не имею представления о том, что не работают для вас, мне кажется, что это должно сработать, однако я бы хотел порекомендовать вам использовать готовую библиотеку, чтобы показать фотогалерею с ее такой общей задачи и иметь такой отличный код и преломлять ее по мере необходимости. Я сделал много проектов, которые включали в себя галерею, и рефрактурирование кода, «усиленного в битве», который люди много работали, обычно эффективен с точки зрения времени, например MWPhotoBrowser –
Вы нашли решение проблемы? –
У меня такая же проблема на iOS 6. Но она исправлена в iOS 7. –