2014-03-04 56 views
8

我的UICollectionView单元格不会在iOS6上显示,因为我的委托方法cellForItemAtIndexPath未被调用。我怀疑,因为这一警告的:UICollectionView在iOS7上工作,但不在iOS6上

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细胞内。

任何想法? 谢谢!

回答

4

这个固定我的问题!在我的.xib中,将我的收藏视图大小单元格大小设置为较小的值。

我的设置是,我有这个collectionview定制tableview细胞内和 我回来我tableview细胞的高度编程(取决于内容)。所以可能是我的警告与我的collectionview不适合tableview单元格有关。因此将初始collectionview设置为较小的值可以修复它。

我错误地认为问题出在我的collectionview及其colletionview单元格上。

也许吧?

8

尝试设置self.automaticallyAdjustsScrollViewInsets = NO

这在推出,所以你可能想换行与版本检查,如果要支持及以下。

+0

真不明白为什么这个工作,但它只是清除了UICollectionViewFlowLayout警告我已经调试在过去的两小时。谢谢! – djibouti33

+0

它实际上工作正常在ios7上,所以不幸的是,这个属性不会帮助我在这种情况下,因为我看到了ios6上的问题。 –

1

我发现我不得不在viewWillLayoutSubviews中手动设置self.collectionView.collectionViewLayout.itemSize

- (void)viewWillLayoutSubviews { 
    self.collectionView.collectionViewLayout.itemSize = CGRectMake(...); 
} 

另一种可能产生同样的伎俩将是实现该方法
collectionView:layout:sizeForItemAtIndexPath:

+0

thx为问题编辑。我的collectionview实际上是一个自定义tableview单元格中的一个组件。有点混淆在哪里放置这行代码? –

+0

VC的viewWillLayout当主框架发生变化时(初始布局,旋转等),调用子视图。这只是你重写的一种方法(默认不做任何事)。我猜你对你的情况不会有太大的帮助。在编辑问题上,我修正了“那”v“而不是”错字,然后我在另一个问题上注意到它实际上是苹果的错字! – mackworth

+0

哈哈是的,它总是让我看到这个错字!看到我的答案btw。 –

3
self.automaticallyAdjustsScrollViewInsets = NO 

实际上做了诡计。它也快速解决了我的问题,水平流布局的单元格的顶部为-32(???),并且不适合集合视图。

0

我有同样的问题,在我的情况collectionCell的故事板的尺寸为96×96,也下-(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下,它已经很晚了,但希望这会帮助一些..干杯..

-1

集:

self.itemSize = CGSizeMake(1, 1); 
相关问题