对UICollectionViewFlowLayout进行子类化会导致空白单元格

时间:2014-05-16 12:35:34

标签: ios objective-c uitableview uicollectionview uicollectionviewlayout

使用UICollectionViewFlowLayout,我有2列 - 集合视图,效果很好。 当我需要在同一行的单元格之间保持恒定距离时,问题已经开始,当它们具有动态高度时。

所以,我有每个人都做的子类UICollectionViewFlowLayout,但是它做了什么,是为了消除下一个要加载到屏幕的单元格,所以滚动时我有空格,没有单元格,而且它们最近突然加载。看起来像

 1 2
 3 4
   6
   8
   10

比,5-7-10突然出现晚了。似乎子类改变了创建单元格的委托方法,并且现在没有被调用,以加载下一个单元格。

它有什么问题吗?我挣扎了3天没有结果。 假设使间距相等(并导致问题)的子类方法

- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath
{
    UICollectionViewLayoutAttributes* currentItemAttributes = [super layoutAttributesForItemAtIndexPath:indexPath];
      if (indexPath.item < numColumns)
    {
        CGRect f = currentItemAttributes.frame;
        f.origin.y = 0;
        currentItemAttributes.frame = f;
        return currentItemAttributes;
    }


    NSIndexPath* ipPrev = [NSIndexPath indexPathForItem:indexPath.item-numColumns inSection:indexPath.section];
    CGRect fPrev = [self layoutAttributesForItemAtIndexPath:ipPrev].frame;
    CGFloat YPointNew = fPrev.origin.y + fPrev.size.height + 10;
    CGRect f = currentItemAttributes.frame;
    f.origin.y = YPointNew;
    currentItemAttributes.frame = f;
    return currentItemAttributes;
}

编辑!

3天后,我已经设法改变解决问题的方法,但没有任何意义。 我已将集合视图的内容高度更改为屏幕大小的6倍!这解决了这个问题。我认为我在设置流程和集合的内容方面做错了什么:

TopAlignedCollectionViewFlowLayout *layout=[[TopAlignedCollectionViewFlowLayout alloc] init];
    CGRect  size=CGRectMake( ([UIScreen mainScreen].bounds.size.width-collectionWidth)/2,
                            upperView.frame.size.height, collectionWidth, 6.5*([UIScreen mainScreen].bounds.size.height-upperLineMargin));
    self.GridView=[[UICollectionView alloc] initWithFrame:size collectionViewLayout:layout];
    [self.GridView registerClass:[GridCell class] forCellWithReuseIdentifier:@"Cell"];

只有现在,他才会加载所有细胞。问题是现在我无法到达集合的末尾。

0 个答案:

没有答案