简而言之,我所需的屏幕布局基本上是用户配置文件(iOS 7 + Xcode 5)。我使用UIScrollView作为顶级视图。 原因是我希望其所有子视图都滚动(用户信息视图 - 带有个人资料图片的视图和您在屏幕上看到的一些按钮,以及照片集合视图 - 带有黑色背景)滚动时。
黑色背景区域将显示用户照片。我想知道我是否可以在这里使用UICollectionView,或者有更好的方法来实现它。在这种情况下,UICollectionView不能自己滚动,它只显示所有单元格,而滚动工作由最外层的UIScrollView处理。
我阅读了以下帖子:
UICollectionView inside of UIScrollView
UICollectionView in UIScrollView -> Scroll Order
iOS 7 Collection View inside Scroll View
有人说在UIScrollView中实现UICollectionView是不可能的(或者至少是奇怪的),因为UIScrollView是UICollectionView的超类,它会导致意外的行为。有人说它应该以另一种方式实施(但我没有看到明确的建议)。
答案 0 :(得分:7)
是的,您可以在UICollectionView
内加UIScrollView
。 iOS has fully supported nested scroll views since iOS 3.0,UICollectionView
是UIScrollView
的子类。例如,查看iOS设备上的App Store应用程序。屏幕垂直滚动 - 它是UIScrollView
或UITableView
(它本身是UIScrollView
的子类)。每行图标都水平滚动 - 每行都是UICollectionView
。
但是,不清楚为什么你需要在滚动视图中放置一个集合视图。听起来你只想让照片视图滚动,所以只需将照片视图设为集合视图即可。为什么需要将集合视图放在滚动视图中?
只需使用集合视图即可。将第0部分的标题设置为配置文件信息视图。你不需要滚动视图。
如果您将所有照片放在一个部分中,则可以在故事板中设置标题,而无需代码。如果您使用多个部分,则需要在代理中实施collectionView:layout:referenceSizeForHeaderInSection:
并在数据源中实施collectionView:viewForSupplementaryElementOfKind:atIndexPath:
。