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

예, 보완적인보기에서 나는 끈적한 헤더가있는 사용자 정의 컬렉션보기 레이아웃을 효율적으로 구현할 수있었습니다. 누군가 내 코드를보고 싶다면 자유롭게 질문하십시오.