【问题标题】:Pass scroll between UIScrollView and embed UICollectionView在 UIScrollView 和嵌入 UICollectionView 之间传递滚动
【发布时间】:2016-05-29 05:10:22
【问题描述】:

这是我的架构。

我有一个UIScrollView,其中添加了一些 UIView。 在我的滚动视图的最后,我有一个UICollectionView(嵌入在我的滚动视图中),我在其中加载了许多数据。我必须使用UICollectionView 才能重用显示的多个视图。

我想要的是当用户滚动到父滚动视图的底部并继续在UICollectionView 中滚动时保持平滑滚动

我现在所做的是将我的UICollectionView 的大小设置为等于我的UIScrollView 大小,并且我已经禁用了两者的反弹。

但我不能流畅地滚动。当我到达UIScrollView 的末尾时,滚动视图停止,然后我必须重新滚动我的UICollectionView

不确定是否真的很清楚。

【问题讨论】:

    标签: ios scroll uiscrollview uicollectionview


    【解决方案1】:

    您通常不应该在元素之间“传递滚动”。您需要确保UICollectionView 的 frameSize 等于它的 contentSize,这意味着它的 frameSize 与它的内容一样扩展,因此它的所有内容都是可见的,而无需滚动。然后您的UIScrollView 将处理滚动并通过滚动本身来显示您的UIViewController 的内容。

    【讨论】:

    • 通过这样做,我很快就会收到内存警告,因为没有一个 UICollectionViewCell 被重用
    • 这里展示了如何正确调整 UICollectionView 的大小以使其完全显示其内容:stackoverflow.com/questions/20792299/…
    • 我已经实现了类似的解决方案,但是这样做,我无法重用我的收藏视图中显示的所有单元格
    • 这与重用无关。 collectionView 应该处理重用,因为一些单元格进入视口,一些单元格出去。我想说这种方法很常见。
    • 如果您根据 contentSize 更新集合视图的框架。你将如何重用?有很多单元格需要填充 contentSize。所以没有重复使用。假设一个高度为 50 像素的单元格大小,而我的 UICollectionView 的 contentSize 为 4000。我将同时实例化 80 个单元格。这不是一个好的解决方案
    猜你喜欢
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-18
    • 2020-09-17
    • 2014-01-24
    相关资源
    最近更新 更多