You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by ac...@apache.org on 2018/04/27 14:24:24 UTC

incubator-weex git commit: [WEEX-321] [iOS] fix animationModule with needLayout bug [Forced Update!]

Repository: incubator-weex
Updated Branches:
  refs/heads/master 79b10220d -> cfefd7b64 (forced update)


[WEEX-321] [iOS] fix animationModule with needLayout bug

You can see demo http://dotwe.org/vue/afb257a664b58c013eb60a4ef2eb8df7

This issue fix when animation 'needLayout:true' bug.
 close #1139


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/cfefd7b6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/cfefd7b6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/cfefd7b6

Branch: refs/heads/master
Commit: cfefd7b6425c9feeebdf360501ae670a90dcee63
Parents: 21aa9ab
Author: doumafang <do...@gmail.com>
Authored: Fri Apr 27 21:43:15 2018 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Fri Apr 27 22:23:21 2018 +0800

----------------------------------------------------------------------
 .../WeexSDK/Sources/Module/WXAnimationModule.m  | 43 +++++++-------------
 1 file changed, 15 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/cfefd7b6/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m b/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m
index a619166..a6e2eb5 100644
--- a/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m
+++ b/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m
@@ -134,8 +134,9 @@
 
 @interface WXAnimationModule ()
 
-@property (nonatomic,assign) BOOL needLayout;
+@property (nonatomic, assign) BOOL needLayout;
 @property (nonatomic, strong) WXTransition *transition;
+@property (nonatomic, strong) NSMutableDictionary *transitionDic;
 @property (nonatomic, assign) BOOL isAnimationedSuccess;
 
 @end
@@ -178,6 +179,9 @@ WX_EXPORT_METHOD(@selector(transition:args:callback:))
     if (args[@"needLayout"]) {
         _needLayout = [WXConvert BOOL:args[@"needLayout"]];
         _transition = [WXTransition new];
+        _transitionDic = [NSMutableDictionary new];
+        _transition.filterStyles = [NSMutableDictionary new];
+        _transition.oldFilterStyles = [NSMutableDictionary new];
     }
     CAMediaTimingFunction *timingFunction = [WXConvert CAMediaTimingFunction:args[@"timingFunction"]];
     NSDictionary *styles = args[@"styles"];
@@ -273,7 +277,7 @@ WX_EXPORT_METHOD(@selector(transition:args:callback:))
             [infos addObject:info];
         } else if ([property isEqualToString:@"width"]) {
             if (_needLayout) {
-                [self animationWithTransitionTarget:target handleProperty:property withDic:args];
+                [self transitionWithArgs:args withProperty:property target:target];
             }
             else
             {
@@ -286,7 +290,7 @@ WX_EXPORT_METHOD(@selector(transition:args:callback:))
             }
         } else if ([property isEqualToString:@"height"]) {
             if (_needLayout) {
-                [self animationWithTransitionTarget:target handleProperty:property withDic:args];
+                [self transitionWithArgs:args withProperty:property target:target];
             }
             else
             {
@@ -302,31 +306,14 @@ WX_EXPORT_METHOD(@selector(transition:args:callback:))
     return infos;
 }
 
-- (void)animationWithTransitionTarget:(WXComponent *)target handleProperty:(NSString *)property withDic:(NSDictionary *)args
+- (void)transitionWithArgs:(NSDictionary *)args withProperty:(NSString *)property target:(WXComponent *)target
 {
-    NSDictionary *styles = args[@"styles"];
-    _transition.filterStyles = [NSMutableDictionary dictionaryWithDictionary:styles];
-    _transition.oldFilterStyles =_transition.oldFilterStyles ? :[NSMutableDictionary dictionaryWithDictionary:target.styles] ;
-    [_transition.oldFilterStyles setObject:@([args[@"duration"] doubleValue]) forKey:kWXTransitionDuration];
-    [_transition.oldFilterStyles setObject:@([args[@"delay"] doubleValue]) forKey:kWXTransitionDelay];
-    NSString *oldProperty = _transition.oldFilterStyles[kWXTransitionProperty];
-    NSString *newProperty;
-    if (oldProperty) {
-        if ([oldProperty containsString:property]) {
-            newProperty = oldProperty;
-        }
-        else
-        {
-            newProperty = [NSString stringWithFormat:@"%@,%@",oldProperty,property];
-        }
-    }
-    else
-    {
-        newProperty = property;
-    }
-    [_transition.oldFilterStyles setObject:newProperty forKey:kWXTransitionProperty];
-    [_transition.oldFilterStyles setObject:args[@"timingFunction"] forKey:kWXTransitionTimingFunction];
-    [target _modifyStyles:styles];
+    [_transition.filterStyles setObject:args[@"styles"][property] forKey:property];
+    [_transition.oldFilterStyles setObject:target.styles[property] forKey:property];
+    [target _modifyStyles:@{property:args[@"styles"][property]}];
+    [_transitionDic setObject:@([args[@"duration"] doubleValue]) forKey:kWXTransitionDuration];
+    [_transitionDic setObject:@([args[@"delay"] doubleValue]) forKey:kWXTransitionDelay];
+    [_transitionDic setObject:args[@"timingFunction"] forKey:kWXTransitionTimingFunction];
 }
 
 - (void)animation:(WXComponent *)targetComponent args:(NSDictionary *)args callback:(WXModuleKeepAliveCallback)callback
@@ -361,7 +348,7 @@ WX_EXPORT_METHOD(@selector(transition:args:callback:))
     [CATransaction commit];
     if (_needLayout) {
         WXPerformBlockOnComponentThread(^{
-            [_transition _handleTransitionWithStyles:_transition.filterStyles resetStyles:nil target:targetComponent];
+            [_transition _handleTransitionWithStyles:_transitionDic resetStyles:nil target:targetComponent];
         });
     }
 }