如何在UIScrollView中实现不可滚动的UICollectionView?

简而言之,我所需的屏幕布局基本上是一个用户configuration文件(iOS 7 + Xcode 5)。 我用UIScrollView作为顶层视图。 原因是我想要滚动它的所有子视图 (用户信息视图 – 一个configuration文件图像和一些button,你在屏幕上看到的,和照片集合视图 – 一个黑色的背景)。

在这里输入图像说明

黑色背景的地区将显示用户照片。 我想知道是否可以在这里使用UICollectionView,或者有更好的方法来实现它。 在这种情况下,UICollectionView不应该能够自己滚动,它只显示所有单元格,而滚动工作由最外层的UIScrollView处理。

我读了以下post:

UIScrollView里面的UICollectionView

UIScrollView中的UICollectionView – >滚动顺序

滚动视图中的iOS 7集合视图

有人说,在UIScrollView中实现UICollectionView是不可能的(或者至less是奇怪的),因为UIScrollView是UICollectionView的超类,这会导致意外的行为。 有人说应该以另一种方式来实施(但我没有看到明确的build议)。

是的,你可以把一个UICollectionView放在UIScrollView里面。 自iOS 3.0以来,iOS完全支持嵌套滚动视图 ,而UICollectionViewUIScrollView的子类。 例如,查看iOS设备上的App Store应用程序。 屏幕垂直滚动 – 它可以是UIScrollViewUITableView (它本身就是UIScrollView的子类)。 并且每行图标水平滚动 – 每行都是一个UICollectionView

但是,目前还不清楚为什么需要在滚动视图中放置一个集合视图。 这听起来像你只想要照片视图滚动,所以只是使照片视图是一个集合视图。 为什么你需要将collections视图放在滚动视图中?

UPDATE

只需使用收集视图。 将部分0的标题设置为configuration文件信息视图。 你不需要滚动视图。

如果你把所有的照片放在一个部分,你可以在你的故事板中设置没有代码的标题。 如果您使用多个部分,则需要在您的数据源中的代表和collectionView:viewForSupplementaryElementOfKind:atIndexPath:中实现collectionView:layout:referenceSizeForHeaderInSection: collectionView:viewForSupplementaryElementOfKind:atIndexPath: