From 24fb291ba881270379179fed812d4e4f80f142f4 Mon Sep 17 00:00:00 2001 From: "pengfei.zhou" Date: Tue, 10 Dec 2019 19:57:46 +0800 Subject: [PATCH] feat:flowlayout async blend sub node --- Pod/Classes/Shader/DoricFlowLayoutNode.m | 36 +++++++++++++----------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/Pod/Classes/Shader/DoricFlowLayoutNode.m b/Pod/Classes/Shader/DoricFlowLayoutNode.m index b3960900..fec2a18e 100644 --- a/Pod/Classes/Shader/DoricFlowLayoutNode.m +++ b/Pod/Classes/Shader/DoricFlowLayoutNode.m @@ -249,24 +249,26 @@ - (DoricViewNode *)subNodeWithViewId:(NSString *)viewId { } - (void)blendSubNode:(NSDictionary *)subModel { - NSString *viewId = subModel[@"id"]; - DoricViewNode *viewNode = [self subNodeWithViewId:viewId]; - if (viewNode) { - [viewNode blend:subModel[@"props"]]; - } else { - NSMutableDictionary *model = [[self subModelOf:viewId] mutableCopy]; - [self recursiveMixin:subModel to:model]; - [self setSubModel:model in:viewId]; - } - [self.itemViewIds enumerateKeysAndObjectsUsingBlock:^(NSNumber *_Nonnull key, NSString *_Nonnull obj, BOOL *_Nonnull stop) { - if ([viewId isEqualToString:obj]) { - *stop = YES; - NSIndexPath *indexPath = [NSIndexPath indexPathForRow:[key integerValue] inSection:0]; - [UIView performWithoutAnimation:^{ - [self.view reloadItemsAtIndexPaths:@[indexPath]]; - }]; + dispatch_async(dispatch_get_main_queue(), ^{ + NSString *viewId = subModel[@"id"]; + DoricViewNode *viewNode = [self subNodeWithViewId:viewId]; + if (viewNode) { + [viewNode blend:subModel[@"props"]]; + } else { + NSMutableDictionary *model = [[self subModelOf:viewId] mutableCopy]; + [self recursiveMixin:subModel to:model]; + [self setSubModel:model in:viewId]; } - }]; + [self.itemViewIds enumerateKeysAndObjectsUsingBlock:^(NSNumber *_Nonnull key, NSString *_Nonnull obj, BOOL *_Nonnull stop) { + if ([viewId isEqualToString:obj]) { + *stop = YES; + NSIndexPath *indexPath = [NSIndexPath indexPathForRow:[key integerValue] inSection:0]; + [UIView performWithoutAnimation:^{ + [self.view reloadItemsAtIndexPaths:@[indexPath]]; + }]; + } + }]; + }); } - (void)callItem:(NSUInteger)position size:(CGSize)size {