我已经设置了UICollectionView
(具有默认流程布局和垂直滚动)与从xib加载的自定义单元格。单元包含几个元素(一个UILabel
和一个UIView
),并对它们加以限制。我已经设置了限制,使得细胞高度成长,如使用新UICollectionViewFlowLayout
属性,在iOS8上的可用,estimatedItemSize
标签文本高度的增加:垂直滚动UICollectionView自定义单元格只显示一半的单元格
layout.estimatedItemSize = CGSizeMake(self.collectionView.frame.width, 100)
一切就像一个魅力除了有一个很大的问题:UICollectionView
仅加载numberOfItemsInSection
方法返回的一半项目。所以,当方法返回时,比如10,我的UICollectionView
只显示5个单元格(但显示并完美地显示出来)。
从我的调试尝试一些相关的研究结果:
- 我已经能够通过调用
invalidateLayout
或改变部分的数量从1至2迫使剩余物品的装载但这些只是调试黑客。 - 另外,当我用
itemSize
属性代替estimatedItemSize
时,所有东西都很有魅力,即硬编码项目大小。但是这打破了我想要实现的自我调整功能。
我假设我在考虑自我大小的细胞有什么问题。具体来说,我想知道问题是否与限制有关。
我很感谢这里的任何帮助。
快速更新:这似乎是一个更普遍的错误(或者我们会发现它们只是古怪的实现细节)调整UITableViews和UICollectionViews中的单元格大小。我还没有到处提交针对UICV自动调整大小的雷达,但我把它放在了UITableView - https://github.com/rainypixels/SelfSizingCells – rainypixels 2014-10-22 01:00:15