UICollectionView 无法滚动查看整个最后一行
Posted
技术标签:
【中文标题】UICollectionView 无法滚动查看整个最后一行【英文标题】:UICollectionView not able to scroll to see the entire last row 【发布时间】:2014-01-11 19:53:32 【问题描述】:我有一个 UICollectionView,大小为:768x1024
,顶部有一个导航栏。我的自定义UICollectionViewCells
的大小为200x200
。问题是,当我继续添加单元格并到达底行时,我只能看到200x200
单元格的一部分。在它反弹之前,它不会让我进一步滚动。关于问题可能是什么的任何想法?
编辑:
我通过以下方式添加单元格:
insertItemsAtIndexPaths:
【问题讨论】:
您的收藏视图的框架是否将其置于屏幕外? 有点,我仍然可以看到它,但我无法一直滚动到单元格底部 你试过缩小你的框架吗? 您的收藏视图的框架。 @AaronBrager,嗯,我没有。这会有什么影响? 【参考方案1】:问题只是将 AutoLayout 约束添加到包含 UICollectionView
的视图控制器。为此,请在 Storyboards 中选择 View Controller,然后单击顶部的“Editor”。然后,“解决自动布局问题”>“重置为建议的约束...”
【讨论】:
这可以更好地与您的约束混搭以验证集合视图约束。可能是您的集合视图高度大于视图控制器。【参考方案2】:在集合视图的大小检查器中检查您是否更改了集合视图的最小间距属性。将其设置回默认值(10)是我的解决方案。
【讨论】:
【参考方案3】:问题与您的 UICollectionViewLayout 有关,因为布局的工作是说明实际可滚动内容的大小,并在必要时要求刷新该信息。但不幸的是,您的问题没有揭示您如何进行布局或如何“不断添加单元格”,因此无法给出具体答案。
编辑(编辑后):调用insertItemsAtIndexPaths:
是不够的;您还必须将项目添加到模型(数据源)中。否则,布局不知道它们并且不会使可滚动内容更大(并且还会发生许多其他不好的事情)。
【讨论】:
对不起,很难描述界面。我在原帖中添加了一个编辑。是否可以告诉布局,“滚动到最后一个元素的边缘+一个缓冲区”? 布局可以为所欲为;您可以编写(或子类化)您自己的布局类。但是,您仍然没有回答我的隐含问题;你甚至没有说你使用的是什么布局! 我在别处更新我的数据源。另外,我没有使用任何特定的布局? (我想?)这只是一个普通的UICollectionView
每个集合视图都有一个布局。您可能正在使用 UICollectionViewFlowLayout。【参考方案4】:
我认为您以不寻常的方式使用集合视图,但如果集合视图的滚动视图的内容区域扩展集合视图的框架大小,您必须使用属性“contentSize”设置虚拟大小:
self.collectionView.contentSize = CGSizeMake(768,900);
【讨论】:
谢谢,但这没有效果 问题是你没有显示你所做的任何代码。调用 insertItemsAtIndexPaths id definitv 不是填充集合视图单元格的正确方法。通常您会定义一个数据源并提供正确的数据源和委托方法,例如“numberOfItemsInSection”和“cellForItemAtIndexPath”。【参考方案5】:我遇到了类似的问题,但由于渐变位于集合视图的底部,用户无法看到集合视图的最后一行。
我发现解决它的方法是在大小检查器中,将页脚大小的高度设置为一个可以解决问题的数字。
我知道这也许不是最好的解决方案。但它适用于我的问题,而且非常容易使用。
Collection View that doesn't show the last row:
Collection View after setting the Footer Size Height to 40:
【讨论】:
嗨...如果您看到此消息,请回复我,我需要问一些重要的事情。以上是关于UICollectionView 无法滚动查看整个最后一行的主要内容,如果未能解决你的问题,请参考以下文章
UICollectionView 和 Selected Cell 在滚动时失去选择
tvOS:当它像这样实现时无法滚动 UICollectionView 项目:UITableView 内的 UICollectionView