【问题标题】:How to implement non-scrollable UICollectionView inside UIScrollView?如何在 UIScrollView 中实现不可滚动的 UICollectionView?
【发布时间】:2014-10-05 00:50:07
【问题描述】:

简而言之,我想要的屏幕布局基本上是用户配置文件(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 的超类,会导致意外行为。有人说应该以其他方式实现(但我没有看到明确的建议)。

【问题讨论】:

  • 所以你说你希望带有“社交资料”标签的橙色条、模糊背景图像以及覆盖在模糊背景图像上的所有内容从屏幕顶部垂直滚动,并且您希望黑色区域充满照片,并在屏幕向上滚动时出现更多照片?你想让底部的标签栏保持固定吗?
  • 是的,你是对的,但是我希望导航栏和标签栏保持固定 :)

标签: ios ios7 uiscrollview uicollectionview


【解决方案1】:

是的,您可以将UICollectionView 放在UIScrollView 中。 iOS has fully supported nested scroll views since iOS 3.0,而UICollectionViewUIScrollView 的子类。例如,查看您 iOS 设备上的 App Store 应用程序。屏幕垂直滚动 - 它是 UIScrollViewUITableView(它本身是 UIScrollView 的子类)。并且每一行图标水平滚动——每一行都是一个UICollectionView

但是,不清楚为什么需要将集合视图放在滚动视图中。听起来您只希望照片视图滚动,因此只需将照片视图设为收藏视图即可。为什么需要将集合视图放在滚动视图中?

更新

只需使用集合视图。将第 0 部分的标题设置为配置文件信息视图。您不需要滚动视图。

如果您将所有照片放在一个部分中,您可以在情节提要中设置页眉而无需代码。如果您使用多个部分,则需要在您的委托中实现collectionView:layout:referenceSizeForHeaderInSection:,在您的数据源中实现collectionView:viewForSupplementaryElementOfKind:atIndexPath:

【讨论】:

  • 感谢您的回答。原因是我希望滚动整个屏幕,即用户信息视图没有停靠在顶部。当我向下滚动查看照片时,它应该滚动...
  • 很棒的设置。我在一小时前发现并实施了这种方式。您的回答使我对良好做法更有信心。谢谢! :)
  • 如果您希望标题视图可以像手风琴一样展开。如果设置为collection view的section 0的header view,如何实现展开和折叠的动画。
  • 在设置表示标题已展开的标志后使集合视图布局无效。返回表头单元格时,检查标志以确定如何配置单元格。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-11
  • 1970-01-01
  • 2016-03-27
  • 1970-01-01
  • 1970-01-01
  • 2011-08-23
相关资源
最近更新 更多