ios - UICollectionViewFlowLayout subclass not working -
here uicollectionviewflowlayout subclass:
@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
when following, collection view not scroll:
mycollectionviewflowlayout* flowlayout = [[mycollectionviewflowlayout alloc] init];
however if this:
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;
then collection view scrolls fine. doing wrong in uicollectionviewflowlayout subclass?
the problem collectionviewcontentsize
- (cgsize)collectionviewcontentsize { return self.itemsize; }
returning itemsize here means entire contentsize collection view size of 1 item. try removing code, or changing to
- (cgsize)collectionviewcontentsize { [super collectionviewcontentsize]; }
Comments
Post a Comment