【问题标题】:UICollectionViewFlowLayout subclass not workingUICollectionViewFlowLayout 子类不起作用
【发布时间】:2014-04-12 19:17:09
【问题描述】:

这是我的 UICollectionViewFlowLayout 子类:

@implementation MyCollectionViewFlowLayout

- (id)init
{
    self = [super init];
    if (self) {
        [self setup];
    }

    return self;
}

- (void)setup
{
    self.itemSize = CGSizeMake(320, 320);
    self.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0);
    self.minimumInteritemSpacing = 0;
    self.minimumLineSpacing = 0;
    self.scrollDirection = UICollectionViewScrollDirectionVertical;
}


- (void)prepareLayout {
    [super prepareLayout];

}

- (CGSize)collectionViewContentSize {
    return self.itemSize;
}

- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect {
    NSArray* allAttributesInRect = [super layoutAttributesForElementsInRect:rect];

    return allAttributesInRect;
}


- (UICollectionViewLayoutAttributes*)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath {
    UICollectionViewLayoutAttributes* attributes = [super layoutAttributesForItemAtIndexPath:indexPath];

    return attributes;
}

@end

当我执行以下操作时,集合视图将不会滚动:

MyCollectionViewFlowLayout* flowLayout = [[MyCollectionViewFlowLayout alloc] init];

但是,如果我这样做:

UICollectionViewFlowLayout* flowLayout = [[UICollectionViewFlowLayout alloc] init];
flowLayout.itemSize = CGSizeMake(320, 320);
flowLayout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0);
flowLayout.minimumInteritemSpacing = 0;
flowLayout.minimumLineSpacing = 0;
flowLayout.scrollDirection = UICollectionViewScrollDirectionVertical;

然后集合视图滚动正常。我在 UICollectionViewFlowLayout 子类中做错了什么?

【问题讨论】:

    标签: ios uicollectionview uicollectionviewlayout


    【解决方案1】:

    问题是collectionViewContentSize

    - (CGSize)collectionViewContentSize {
        return self.itemSize;
    }
    

    这里返回itemSize意味着你的collection view的整个contentSize只有一个item的大小。尝试删除该代码,或将其更改为

    - (CGSize)collectionViewContentSize {
        [super collectionViewContentSize];
    }
    

    【讨论】:

    • 你甚至不需要实现这些,超类应该为流布局实现它。
    猜你喜欢
    • 2014-08-09
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多