컬렉션보기 레이아웃에 끈적한 헤더를 구현하고 싶지만 효율적인 방법입니다. 사과 설명서를 살펴본 결과 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
누군가가 나에게 무엇이 잘못을 발견하는 데 도움이
나는 내 사용자 정의 컬렉션 뷰 레이아웃에 다음 코드?참고 :내 끈적 끈적한 헤더는 각 섹션의 첫 번째 행입니다. 또한 보완 뷰가있는 헤더를 구현할 수 없었습니다.
"보충 뷰가있는 헤더를 구현하십시오."이것이 바로 이동 방법입니다. 문제가 있으면 새로운 질문을하고 자신이 한 일, 기대하는 일 및 실제로 무엇이 일어나고 있는지 보여주십시오. – shallowThought