自定义UICollectionViewLayout:layoutAttributesForElementsInRect请求非常小的rect

时间:2014-01-21 14:31:47

标签: ios uicollectionview

我创建了自定义布局子类UICollectionViewLayout。它完全按照我的需要工作,但当集合只有少量元素(如“3”)时,方法layoutAttributesForElementsInRect会询问0 width矩形的信息。

这是我的layoutAttributesForElementsInRect实现的代码:

- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect{

    NSMutableArray *results = [NSMutableArray array];

    for (UICollectionViewLayoutAttributes *attributes in self.elementsAttributes) {

        if(CGRectIntersectsRect(rect, attributes.frame)){
            [results addObject:attributes];
        }
    }

    return results;
}

我在prepareLayout方法中缓存属性...所以例如我有3个元素,但是我从前一个函数收到的rect参数只是“不可能”,实际上它是:{{0, 0}, {0, 180}}

只有在我的集合视图中有一些单元格时才会发生这种情况。

为什么以及如何获取应显示的所有单元格的属性?

1 个答案:

答案 0 :(得分:4)

问题在于覆盖collectionViewContentSize。我在这个函数中有一个错误,并且有少量的Cells返回宽度为0。