我的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上没有收到警告,并且所有单元格也在那里正确显示。
我在.xib
中将collectionView
框架设置为 270 高度,并且没有定义插图。我在.xib
中将单元格高度设置为 270。我可以在运行时打印出我的collectionView
帧,它是 271。
此外,我的collectionview
实际上位于自定义tableview
单元格内。
有什么想法吗?谢谢!
尝试设置self.automaticallyAdjustsScrollViewInsets = NO
这是在ios7中引入的,因此如果您支持ios6及更低版本,则可能需要使用ios版本检查来包装它。
这解决了我的问题!在我的.xib
中,将我的集合视图大小单元格大小设置为较小的值。
我的设置是我在自定义tableview
单元格中具有此collectionview
,并且我确实以编程方式返回tableview
单元格的高度(取决于内容)。因此,我的警告可能与我的collectionview
不适合tableview
牢房有关。因此,将初始collectionview
设置为较小的值可以修复它。
我走在错误的道路上,认为问题出在我的collectionview
及其colletionview
细胞上。
或?
self.automaticallyAdjustsScrollViewInsets = NO
居然做到了。 它还解决了我在 SWIFT 中的问题,其中水平流布局的单元格的框架顶部为 -32 (???),并且无法正确放入集合视图。
我发现我必须在viewWillLayoutSubviews中手动设置self.collectionView.collectionViewLayout.itemSize
。
- (void)viewWillLayoutSubviews {
self.collectionView.collectionViewLayout.itemSize = CGRectMake(...);
}
生成相同技巧的另一种可能性是实现该方法
collectionView:layout:sizeForItemAtIndexPath:
有同样的问题,在我的情况下,情节提要中 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下,已经晚了,但希望这会对一些人有所帮助。干杯。。
设置:
self.itemSize = CGSizeMake(1, 1);