Add find visible items for list and flowlayout
This commit is contained in:
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user