Я думаю, проблема в том, что вы звоните:
flowLayout.estimatedItemSize = UICollectionViewFlowLayout.automaticSize
в вашем проекте.
Если вы сбросите это как-то так:
layoutFlow.estimatedItemSize = CGSize(width: UIScreen.main.bounds.size.width, height: 100)
Тогда он сразу становится более плавным.
Примечание: Стоит отметить, что оценочная высота, на которую вы устанавливаете свои ячейки, имеет значение. Если вы установите его в 0, то reloadData()
прокрутит collectionView к вершине. Установка точного значения лучше всего подходит для тестирования
Есть еще несколько ошибок, которые, кажется, исправлены удалением
collectionView.collectionViewLayout.invalidateLayout()
и поменять его на что-то вроде
collectionView.reloadData()
collectionView.reloadItems(at: collectionView.indexPathsForVisibleItems)
Я не знаю, для какого именно назначения вы этого хотите, поэтому я не могу полностью проверить, как это должно быть, но invalidateLayout кажется неправильным способом перезагрузить collectionView.