Skip to content

Commit

Permalink
Revert "fix(ios): fix combined animation error (#941)"
Browse files Browse the repository at this point in the history
This reverts commit 95bc07c.
  • Loading branch information
ozonelmy authored and zoomchan-cxj committed Sep 10, 2021
1 parent 22582f4 commit 6c4fe03
Show file tree
Hide file tree
Showing 10 changed files with 5 additions and 110 deletions.
8 changes: 0 additions & 8 deletions ios/sdk/component/view/HippyView+HippyViewAnimation.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,4 @@ NS_ASSUME_NONNULL_BEGIN

@end

@interface CAAnimation (OriginValue)

- (void)setOriginToValue:(id)toValue;

- (id)originToValue;

@end

NS_ASSUME_NONNULL_END
25 changes: 0 additions & 25 deletions ios/sdk/component/view/HippyView+HippyViewAnimation.m
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
#import "HippyView+HippyViewAnimation.h"
#import "HippyExtAnimation.h"
#import "HippyConvert.h"
#import "objc/runtime.h"

@implementation HippyView (HippyViewAnimation)

Expand Down Expand Up @@ -60,33 +59,9 @@ - (CAAnimation *)animation:(HippyExtAnimation *)animation keyPath:(NSString *)ke
ani.fillMode = kCAFillModeForwards;
ani.toValue = toValue;
ani.fromValue = fromValue;
[ani setOriginToValue:@(animation.endValue)];
return ani;
}
return nil;
}

@end

@implementation CAAnimation(OriginValue)

static NSString *const kOriginToValueKey = @"kOriginToValue";

- (void)setOriginToValue:(id)toValue {
[self setValue:toValue forKey:kOriginToValueKey];
}

- (id)originToValue {
id value = [self valueForKey:kOriginToValueKey];
if (value) {
return value;
}
else if ([self respondsToSelector:@selector(toValue)]) {
value = [self performSelector:@selector(toValue)];
return value;
}
return nil;
}

@end

2 changes: 0 additions & 2 deletions ios/sdk/module/animation/HippyExtAnimation.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,6 @@ typedef NS_ENUM(NSInteger, HippyExtAnimationState) {
@property (nonatomic, copy) NSNumber *parentAnimationId;
@property (nonatomic, assign) HippyExtAnimationState state;

+ (NSString *)convertAnimationKeyPathToViewProperty:(NSString *)keyPath;

- (void)updateAnimation:(NSDictionary *)config;

- (CAAnimation *)animationOfView:(UIView *)view forProp:(NSString *)prop;
Expand Down
6 changes: 0 additions & 6 deletions ios/sdk/module/animation/HippyExtAnimation.m
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,6 @@ + (NSDictionary *)animationKeyMap {
return animationMap;
}

+ (NSString *)convertAnimationKeyPathToViewProperty:(NSString *)keyPath {
NSDictionary *map = [self animationKeyMap];
NSArray *keys = [map objectForKey:keyPath];
return [keys firstObject];
}

+ (CGFloat)convertToRadians:(id)json {
if ([json isKindOfClass:[NSString class]]) {
NSString *stringValue = (NSString *)json;
Expand Down
2 changes: 1 addition & 1 deletion ios/sdk/module/animation/HippyExtAnimationModule.m
Original file line number Diff line number Diff line change
Expand Up @@ -327,7 +327,7 @@ - (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag {
[_lock unlock];

[self.bridge.uiManager executeBlockOnUIManagerQueue:^{
[self.bridge.uiManager updateViewsAfterAnimation:anim completion:^(HippyUIManager *uiManager) {
[self.bridge.uiManager updateViewsFromParams:params completion:^(HippyUIManager *uiManager) {
UIView *view = [uiManager viewForHippyTag:viewId];
[view.layer removeAnimationForKey:[NSString stringWithFormat:@"%@", animationId]];
if (!CGPointEqualToPoint(view.layer.anchorPoint, CGPointMake(.5f, .5f))) {
Expand Down
5 changes: 0 additions & 5 deletions ios/sdk/module/uimanager/HippyUIManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -153,11 +153,6 @@ HIPPY_EXTERN NSString *const HippyUIManagerRootViewKey;
- (void)removeNativeNode:(HippyVirtualNode *)node;
- (void)removeNativeNodeView:(UIView *)nodeView;
- (void)updateViewsFromParams:(NSArray<HippyExtAnimationViewParams *> *)params completion:(HippyViewUpdateCompletedBlock)block;

/**
* param animation could be CABasicAnimation or CABasicAnimations within CAAnimationGroup
*/
- (void)updateViewsAfterAnimation:(CAAnimation *)animation completion:(HippyViewUpdateCompletedBlock)block;
- (void)updateViewWithHippyTag:(NSNumber *)hippyTag props:(NSDictionary *)pros;
@end

Expand Down
51 changes: 1 addition & 50 deletions ios/sdk/module/uimanager/HippyUIManager.mm
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,6 @@
#import "HippyMemoryOpt.h"
#import "HippyDeviceBaseInfo.h"
#import "HippyVirtualList.h"
#import "HippyExtAnimation.h"
#import "HippyConvert+Transform.h"
#import "HippyView+HippyViewAnimation.h"

@protocol HippyBaseListViewProtocol;

Expand Down Expand Up @@ -990,8 +987,7 @@ - (void)updateViewsFromParams:(NSArray<HippyExtAnimationViewParams *> *)params c
} else {
HippyAssert(NO, @"param.rootTag不应该为nil,保留现场,找mengyanluo");
}
NSDictionary *updateParams = [param updateParams];
[self updateView:param.hippyTag viewName:nil props:updateParams];
[self updateView:param.hippyTag viewName:nil props:param.updateParams];
if (block) {
[[self completeBlocks] addObject:block];
}
Expand All @@ -1002,51 +998,6 @@ - (void)updateViewsFromParams:(NSArray<HippyExtAnimationViewParams *> *)params c
}
}

- (void)updateViewsAfterAnimation:(CAAnimation *)animation completion:(HippyViewUpdateCompletedBlock)block {
@try {
NSArray<CABasicAnimation *> *basicAnimations = nil;
if ([animation isKindOfClass:[CABasicAnimation class]]) {
basicAnimations = @[(CABasicAnimation *)animation];
}
else if ([animation isKindOfClass:[CAAnimationGroup class]]) {
basicAnimations = (NSArray<CABasicAnimation *> *)[(CAAnimationGroup *)animation animations];
}

NSMutableArray<NSDictionary *> *props = [NSMutableArray arrayWithCapacity:[basicAnimations count]];
NSNumber *viewId = [animation valueForKey:@"viewID"];
HippyShadowView *shadowView = [[self shadowViewRegistry] objectForKey:viewId];
NSDictionary *shadowViewOriginProps = [shadowView props];
NSMutableDictionary *propsAfterAnimation = [shadowViewOriginProps mutableCopy];
for (CABasicAnimation *basicAni in basicAnimations) {
NSString *keyPath = [basicAni keyPath];
NSString *property = [HippyExtAnimation convertAnimationKeyPathToViewProperty:keyPath]?:keyPath;
if (property) {
if ([HippyConvert canConvertPropertyWithTransform3D:property]) {
NSDictionary *updateParams = [NSDictionary dictionaryWithObject:[basicAni toValue] forKey:property];
[props addObject:updateParams];
}
else {
[propsAfterAnimation setObject:[basicAni originToValue] forKey:property];
}
}
}
if ([props count] > 0) {
[propsAfterAnimation setObject:props forKey:@"transform"];
}
[self updateView:viewId viewName:nil props:propsAfterAnimation];
if (block) {
[[self completeBlocks] addObject:block];
}
[self _layoutAndMount];
}
@catch (NSException *exception) {
#if HIPPY_DEBUG
NSError *error = HippyErrorWithMessageAndModuleName([exception reason], self.bridge.moduleName);
HippyFatal(error);
#endif //HIPPY_DEBUG
}
}

- (void)updateViewWithHippyTag:(NSNumber *)hippyTag props:(NSDictionary *)pros {
[self updateView:hippyTag viewName:nil props:pros];
}
Expand Down
1 change: 0 additions & 1 deletion ios/sdk/utils/HippyConvert+Transform.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,4 @@
+ (CATransform3D)CATransform3D:(id)json;
+ (CGFloat)convertToRadians:(id)json;
+ (CGFloat)convertDegToRadians:(CGFloat)deg;
+ (BOOL)canConvertPropertyWithTransform3D:(NSString *)property;
@end
14 changes: 2 additions & 12 deletions ios/sdk/utils/HippyConvert+Transform.m
Original file line number Diff line number Diff line change
Expand Up @@ -64,20 +64,8 @@ + (CATransform3D)CATransform3DFromMatrix:(id)json {
return transform;
}

+ (BOOL)canConvertPropertyWithTransform3D:(NSString *)property {
static NSArray<NSString *> *props = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
props = @[@"matrix", @"perspective", @"rotate", @"rotateX", @"rotateY",
@"rotateZ", @"scale", @"scaleX", @"scaleY", @"translate",
@"translateX", @"translateY", @"translateZ", @"skewX", @"skewY"];
});
return [props containsObject:property];
}

+ (CATransform3D)CATransform3D:(id)json {
CATransform3D transform = CATransform3DIdentity;
//CATransform3D.m34 makes sure everything looks small in distance and big on the contrary
transform.m34 = -1.0 / 500.0;
if (!json) {
return transform;
Expand Down Expand Up @@ -143,13 +131,15 @@ + (CATransform3D)CATransform3D:(id)json {
CGFloat translateY = [HippyNilIfNull(array[1]) floatValue];
CGFloat translateZ = array.count > 2 ? [HippyNilIfNull(array[2]) floatValue] : 0;
transform = CATransform3DTranslate(transform, translateX, translateY, translateZ);

} else if ([property isEqualToString:@"translateX"]) {
CGFloat translate = [value floatValue];
transform = CATransform3DTranslate(transform, translate, 0, 0);

} else if ([property isEqualToString:@"translateY"]) {
CGFloat translate = [value floatValue];
transform = CATransform3DTranslate(transform, 0, translate, 0);

} else if ([property isEqualToString:@"translateZ"]) {
CGFloat translate = [value floatValue];
transform = CATransform3DTranslate(transform, 0, 0, translate);
Expand Down
1 change: 1 addition & 0 deletions ios/sdk/utils/HippyConvert.h
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ typedef NSURL HippyFileURL;
+ (CGLineCap)CGLineCap:(id)json;
+ (CGLineJoin)CGLineJoin:(id)json;

//+ (CATransform3D)CATransform3D:(id)json;
+ (CGAffineTransform)CGAffineTransform:(id)json;

+ (UIColor *)UIColor:(id)json;
Expand Down

0 comments on commit 6c4fe03

Please sign in to comment.