Add find visible items for list and flowlayout

This commit is contained in:
pengfei.zhou
2021-10-12 16:33:04 +08:00
committed by osborn
parent 1f511823c5
commit 6cae752456
19 changed files with 172 additions and 138 deletions

View File

@@ -31,4 +31,11 @@ - (void)initWithSuperNode:(DoricSuperNode *)superNode {
[super initWithSuperNode:superNode];
self.reusable = YES;
}
- (void)blendView:(UIView *)view forPropName:(NSString *)name propValue:(id)prop {
if ([@"identifier" isEqualToString:name] || [@"fullSpan" isEqualToString:name]) {
} else {
[super blendView:view forPropName:name propValue:prop];
}
}
@end

View File

@@ -483,4 +483,37 @@ - (void)addDidScrollBlock:(__nonnull DoricDidScrollBlock)didScrollListener {
- (void)removeDidScrollBlock:(__nonnull DoricDidScrollBlock)didScrollListener {
[self.didScrollBlocks removeObject:didScrollListener];
}
- (NSArray *)findVisibleItems {
return [[self.view.indexPathsForVisibleItems map:^id(NSIndexPath *obj) {
return @(obj.row);
}] sortedArrayUsingComparator:^NSComparisonResult(NSNumber *obj1, NSNumber *obj2) {
if (obj1.unsignedIntegerValue > obj2.unsignedIntegerValue) {
return NSOrderedDescending;
} else if (obj1.unsignedIntegerValue < obj2.unsignedIntegerValue) {
return NSOrderedAscending;
} else {
return NSOrderedSame;
}
}];
}
- (NSArray *)findCompletelyVisibleItems {
NSArray<__kindof UICollectionViewCell *> *items = [self.view.visibleCells filter:^BOOL(__kindof UICollectionViewCell *obj) {
return CGRectContainsRect(self.view.bounds, obj.frame);
}];
return [[items map:^id(__kindof UICollectionViewCell *obj) {
return @([self.view indexPathForCell:obj].row);
}] sortedArrayUsingComparator:^NSComparisonResult(NSNumber *obj1, NSNumber *obj2) {
if (obj1.unsignedIntegerValue > obj2.unsignedIntegerValue) {
return NSOrderedDescending;
} else if (obj1.unsignedIntegerValue < obj2.unsignedIntegerValue) {
return NSOrderedAscending;
} else {
return NSOrderedSame;
}
}];
}
@end

View File

@@ -448,4 +448,18 @@ - (void)scrollToItem:(NSDictionary *)params {
}
}
- (NSArray *)findVisibleItems {
return [self.view.indexPathsForVisibleRows map:^id(NSIndexPath *obj) {
return @(obj.row);
}];
}
- (NSArray *)findCompletelyVisibleItems {
NSArray<__kindof UITableViewCell *> *items = [self.view.visibleCells filter:^BOOL(__kindof UITableViewCell *obj) {
return CGRectContainsRect(self.view.bounds, obj.frame);
}];
return [items map:^id(__kindof UITableViewCell *obj) {
return @([self.view indexPathForCell:obj].row);
}];
}
@end