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];
});
}
}