2016-12-10 55 views
0

我想在我的集合視圖佈局中實現粘性標題,但效率很高。我看着蘋果文檔,我發現UICollectionViewLayoutInvalidationContext。如何使集合視圖佈局(而不是流佈局)和UICollectionViewLayoutInvalidationContext粘滯標題?

我將此對象與自定義集合視圖佈局一起實現。我的目標是在收集視圖滾動時不要致電prepareLayout

我編碼的我的自定義集合視圖佈局如下:

- (BOOL) shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds{ 
    return YES; 
} 

+ (Class)invalidationContextClass{ 
    return [InvalidationContext class]; 
} 

- (void)invalidateLayoutWithContext:(UICollectionViewLayoutInvalidationContext *)context{ 

    NSMutableArray * indexPaths = [NSMutableArray new]; 

    NSInteger numberOfSections = self.collectionView.numberOfSections; 

    for (NSInteger section = 0; section < numberOfSections; section++) { 
     NSInteger numberOfItemsInSection = [self.collectionView numberOfItemsInSection:section]; 
     if (numberOfItemsInSection > 0) { 
      [indexPaths addObject:[NSIndexPath indexPathForRow:0 inSection:section]]; 
     } 
    } 

    [context invalidateItemsAtIndexPaths:indexPaths]; 
    [super invalidateLayoutWithContext:context]; 
} 

這是我UICollectionViewLayoutInvalidationContext子類:

#import "InvalidationContext.h" 

@implementation InvalidationContext 

- (BOOL)invalidateEverything { 
    return NO; 
} 

@end 

有人能幫助我發現什麼是錯了嗎?

注意:我的粘性標題是每個部分的第一行。我也不能使用補充視圖實現標題。

+0

「使用補充視圖實現標題」:這是要走的路。如果您遇到問題,請提出新問題,並說明您所做的事情,您的期望以及實際發生的情況。 – shallowThought

回答

0

是的,在補充視圖中,我可以以高效的方式實現帶有粘滯標題的自定義集合視圖佈局。如果有人想看我的代碼,請隨時提問。