我的UICollectionView
单元格未显示在iOS6上,因为我的委托方法cellForItemAtIndexPath
未被调用。我怀疑是因为这个警告:
the behavior of the UICollectionViewFlowLayout is not defined because:
the item height must be less that the height of the `UICollectionView`
minus the section inset's top and bottom values.
我没有在iOS7上收到警告,所有单元格也在那里正确显示。
我已将collectionView
框架设置为.xib
中的高度270,并且没有定义任何插图。
我在.xib
中将单元格高度设置为270。
我可以在运行时打印出collectionView
帧,它是271。
此外,我的collectionview
实际上位于自定义tableview
单元格内。
有什么想法吗? 谢谢!
答案 0 :(得分:8)
尝试设置self.automaticallyAdjustsScrollViewInsets = NO
答案 1 :(得分:4)
这解决了我的问题!在我的.xib
中,将我的集合视图大小单元格大小设置为较小的值。
我的设置是我在自定义collectionview
单元格中有tableview
我确实以编程方式返回tableview
单元格的高度(取决于内容)。因此,我的警告可能与collectionview
单元格内的tableview
不符合。因此,将初始collectionview
设置为较小的值可以修复它。
我错误地认为问题出在我的collectionview
及其colletionview
单元格上。
也许?
答案 2 :(得分:3)
self.automaticallyAdjustsScrollViewInsets = NO
实际上是这样做的。它还在swift中解决了我的问题,其中水平流布局的单元格的框架顶部为-32(???),并且不能正确地适合集合视图。
答案 3 :(得分:1)
我发现我必须在viewWillLayoutSubviews中手动设置self.collectionView.collectionViewLayout.itemSize
。
- (void)viewWillLayoutSubviews {
self.collectionView.collectionViewLayout.itemSize = CGRectMake(...);
}
产生相同技巧的另一种可能性是实施方法
collectionView:layout:sizeForItemAtIndexPath:
答案 4 :(得分:0)
我有同样的问题,在我的情况下,故事板中collectionCell的大小是96x96,也在-(CGSize)collectionView:layout:sizeForItemAtIndexPath:
下
解决方案是删除此委托:
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
{
UIEdgeInsets insets = {.left = 10, .right = 10, .top = 5, .bottom = 5};
return insets;
}
顺便说一下,这是在ios7下的,但已经很晚了,但希望这会有所帮助......干杯......
答案 5 :(得分:-1)
设置:
self.itemSize = CGSizeMake(1, 1);