2016-12-10 4 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

Да, с дополнительным видом Я мог бы эффективно реализовать свой собственный макет вида коллекций с липкими заголовками. Если кто-то хочет увидеть мой код, не стесняйтесь спрашивать его.