У меня есть горизонтальный UICollectionView
, который отлично работает и свитки. Когда я нажимаю элемент, я обновляю свои данные и звоню reloadData
. Это работает, и новые данные отображаются в UICollectionView
. Проблема в том, что положение прокрутки не изменяется, и оно все еще просматривает последнее место. Я хочу сбросить прокрутку вверх (или оставить в моем случае). Как я могу это сделать?Сброс прокрутки по UICollectionView
ответ
Вы можете использовать этот метод для перехода к любому пункту вы хотите:
- (void)scrollToItemAtIndexPath:(NSIndexPath *)indexPath
atScrollPosition:(UICollectionViewScrollPosition)scrollPosition
animated:(BOOL)animated
Вы хотите setContentOffset:
. Для CGPoint и аргумента требуется, чтобы вы могли установить, что хотите, используя CGPointMake, но если вы хотите вернуться к самому началу коллекции, вы можете просто использовать CGPointZero.
[collectionView setContentOffset:CGPointZero animated:YES];
, если функция просмотра коллекции разрешает обновление, будет отображаться обновленный вид – jasonhao
+1 'setContentOffset' помог мне работать для UIScrollView. – NeverHopeless
В случае, если вы используете 'contentInsets', вы можете использовать следующую точку для смещения содержимого' CGPointMake (-collectionView.contentInset.left, -collectionView.contentInset.top) ' – TPoschel
К сожалению, я не мог комментировать в момент написания этой статьи, но я с помощью UINavigationController и CGPointZero
сам Бесполезный «Поднимите меня на самый верх, поэтому мне пришлось использовать следующее.
CGFloat compensateHeight = -(self.navigationController.navigationBar.bounds.size.height+[UIApplication sharedApplication].statusBarFrame.size.height);
[self.collectionView setContentOffset:CGPointMake(0, compensateHeight) animated:YES];
Надеюсь, это поможет кому-то в будущем. Ура!
Чтобы справиться с UINavigationController
и прозрачной навигационной панелью, мне пришлось вычислять дополнительное верхнее смещение, чтобы идеально соответствовать положению первого элемента.
Swift 1.1 Код:
let topOffest = CGPointMake(0, -(self.collectionView?.contentInset.top ?? O))
self.collectionView?.setContentOffset(topOffest, animated: true)
Ура!
В Swift:
collectionView.setContentOffset(CGPointZero, animated: true)
Если оставить мнение, что дома вид сбора, внести изменения во 2-м контроллере представления, и потребуется представление коллекции для обновления по возвращении:
@IBAction func unwindTo_CollectionViewVC(segue: UIStoryboardSegue) {
//Automatic table reload upon unwind
viewDidLoad()
collectionView.reloadData()
collectionView.setContentOffset(CGPointZero, animated: true)
}
В моей ситуации разматывание отлично, потому что вызов viewDidLoad обновит контекст CoreData, вызов reloadData будет проверять, что обновления коллекцииView отражают новый контекст CoreData, а затем contentOffset убедится, что таблица вернется в начало.
Я использую это довольно часто в разных частях моего приложения, так что я просто расширенной UIScrollView, поэтому он может быть использован на любом режиме прокрутки и прокручивать вид подкласса:
extension UIScrollView {
/// Sets content offset to the top.
func resetScrollPositionToTop() {
self.contentOffset = CGPoint(x: -contentInset.left, y: -contentInset.top)
}
}
Поэтому, когда мне нужно сбросить положение:
self.collectionView.resetScrollPositionToTop()
CGPointZero в моем случае сдвинул содержимое представления коллекции, потому что вы не учитываете содержимое вставки. Это то, для чего это сработало для меня:
CGPoint topOffest = CGPointMake(0,-self.collectionView.contentInset.top);
[self.collectionView setContentOffset:topOffest animated:YES];
Простой и чистый! –
- 1. Сброс indexPath для uicollectionview
- 2. Предотвращение прокрутки подкачки UICollectionView
- 3. UICollectionView начальное отставание прокрутки?
- 4. UICollectionView Jumpy прокрутки
- 5. Обнаружение прокрутки в UICollectionView
- 6. Сброс прокрутки в ScrollView
- 7. Asterisk CLI - сброс прокрутки
- 8. Изменение направления прокрутки в UICollectionView
- 9. UICollectionView Упорядочивание клетки после прокрутки
- 10. ios UICollectionView определяет направление прокрутки
- 11. Ячейки UICollectionView, покрывающие индикатор прокрутки
- 12. Ошибка UICollectionView и прокрутки программы
- 13. Регулировка скорости/чувствительности прокрутки UICollectionView
- 14. Как изменить направление прокрутки UICollectionView?
- 15. Видео внутри UICollectionView: проблема прокрутки
- 16. Как скрыть полосу прокрутки UICollectionView
- 17. Остановить jQuery «щелчок прокрутки» сброс
- 18. Как достичь Peek Calendar, например, прокрутки по UITableView или UICollectionView?
- 19. iOS7 UICollectionView в направлении прокрутки по горизонтали не работает
- 20. C# Панель с автопрокруткой - сброс позиции прокрутки по фокусу управления
- 21. Сброс изображения по умолчанию после прокрутки - Пользовательский вид Android
- 22. UICollectionView прокручивание направления прокрутки на tvOS
- 23. Xamarin iOS UICollectionView центрирование после прокрутки
- 24. Восстановление состояния UICollectionView: настройка положения прокрутки
- 25. Создание UIView и UICollectionView прокрутки вместе
- 26. Анимация прокрутки в UICollectionView - iOS 10
- 27. UICollectionView сбой после прокрутки и выбора ячейки
- 28. UICollectionView контейнер внутри UIScrollView прокрутки прокрутки в ios 9.1
- 29. UICollectionView не удаляет старые ячейки после прокрутки
- 30. Как загрузить изображения в UICollectionView «без прокрутки»?
Можете ли вы показать свой код при возникновении этой проблемы? Я пытаюсь заставить свой scrollview не прокручиваться, когда я перезагружаю данные lol, у меня есть противоположность вашей проблемы! –