【问题标题】:Is it possible to make a UICollectionView view horizontal scrolling where first column no moving?是否可以在第一列不动的情况下使 UICollectionView 视图水平滚动?
【发布时间】:2017-11-03 14:39:09
【问题描述】:

我需要实现的一个功能是 UICollectionView,它有大量的单元格(产品)并且应该水平和垂直滚动。 唯一的限制是当用户水平滚动时第一列(类别)不应该移动,但当用户与其他单元格(产品)一起上下滚动时应该滚动。是否可以或我需要选择另一个 UI 控件?

【问题讨论】:

  • UICollectionView 本身不支持此功能。您可能需要覆盖自定义 UICollectionViewFlowLayout,例如 - 'layoutAttributesForElementsInRect'、'layoutAttributesForSupplementaryViewOfKind' 和 UICollectionViewFlowLayout 的其余实用程序。
  • 我现在没有时间给你一个正确的答案,但是是的,这可以通过 UICollectionView 实现。您可以创建UICollectionViewLayout 的子类并将“部分”用作行,将项目用作列。在prepareLayout 中,您基本上必须计算冷冻物品的矩形以将它们固定在适当的位置,并允许其余部分在下方滚动。
  • 这是一个例子:brightec.co.uk/ideas/…
  • 是的,就是这样。唯一的补充是我的视图应该有分隔符(补充视图),所有单元格都带有文本

标签: ios swift uicollectionview uicollectionviewlayout


【解决方案1】:

虽然我不会直截了当地说它是不可撤销的……但我建议你把事情分解一下。听起来您有两个集合、类别和产品,并且这两个 ui 元素具有不同的行为。考虑使用两个单独的 UICollectionView,或者一个 UIStackView 和一个 UICollectionView。

如果您可以分享有关您尝试实现的用户界面的更多详细信息,我可以尝试为您提供更多见解。现在听起来像是一个两视图工作

干杯

【讨论】:

  • 添加截图
  • 我明白了。是的。在这种情况下,您可能希望使用@jlew 的解决方案并创建自己的 UICollectionViewLayout 子类。
【解决方案2】:

为什么不把它做成一个单独的视图呢?

class CategoryCollectionView: UIView {
  private let categoryView = UIView()
  private let collectionView = UICollectionView()
}

那么垂直collectionView将只是ViewController中的一个普通子视图。 因此,按照它,我会制作类似于ViewController -> CollectionView -> Cells -> { CategoryCollectionView, CategoryCollectionView, TitleLabel } UI 层次结构的“方案”。简单快速

【讨论】:

  • 以及如何使用上面模型中描述的“一些文本一些文本”实现补充视图?如您所见,文本跨越整个控件
  • @Sergio 您希望从该视图中获得哪种行为?它应该是什么尺寸?
  • 当用户水平滚动时,“类别”列和“某些文本”视图应该是静态的。但是当向上/向下滚动时,所有视图都应该是可滚动的
  • @Sergio 您可以将主collectionView(包含带有collectionViews 的单元格)的gestureRecogniser-s 发送到其单元格,并要求内部collectionView 手势识别器失败。然后主滚动只有在没有调用内部间隔collectionView的滚动时才会起作用。明白了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-17
  • 2015-12-17
  • 2016-09-17
  • 1970-01-01
  • 2012-04-15
相关资源
最近更新 更多