Похоже, что вы ограничиваете размер представления коллекции, чтобы он соответствовал границам родительского представления, содержащего представление контейнера представления коллекции и представление изображения.В результате контейнер scrollView
не имеет contentSize
для прокрутки, и поэтому вы не можете прокручивать.Необходимо убедиться, что размер содержимого представления коллекции отражен в размере содержимого родительского представления прокрутки.
В приведенном вами примере такое поведение было достигнуто за счет того, что длина метки требовала высоты, превышающей высоту между видом изображения и остальной частью вида.В вашем случае контейнер представления коллекции должен вести себя так, как будто он больше этой области.
Редактировать: Точнее, вам нужно передать значение collectionView.contentSize
до значения scrollView.contentSize
.contentSize
в scrollview можно установить, поэтому вам просто нужно увеличить scrollView.contentSize
на collectionView.contentSize
- collectionView.height
(поскольку текущий contentSize
вашего scrollView в настоящее время включает в себя высоту collectionView).Я не уверен, как вы добавляете свой дочерний контроллер представления, но в тот момент, когда вы это сделаете, я бы соответственно увеличил contentSize вашего scrollView.Если после этого размер вашего collectionView изменится, вам также необходимо убедиться, что вы делегировали это изменение до значения scrollView
.Этого можно достичь, если иметь протокол, такой как:
protocol InnerCollectionViewHeightUpdated {
func collectionViewContentHeightChanged(newSize: CGSize)
}
, а затем заставить контроллер, содержащий scrollView
, реализовать этот протокол и соответственно обновить scrollView
contentSize
.В вашем дочернем контроллере collectionView
у вас будет свойство delegate
для этого протокола (установите его при создании дочернего контроллера представления, задав для делегата значение self
, контроллер, содержащий дочерний VC, а также scrollView
),Затем всякий раз, когда высота collectionView
изменяется (например, если вы добавляете ячейки), вы можете выполнить delegate.collectionViewContentHeightChanged(...
, чтобы гарантировать, что ваше поведение прокрутки продолжит функционировать.