ios - Why UIView Animation doesn't trigger CALayer's addAnimation:forKey:? -
since uiview animation backed caanimation, guess, when id uiview animatewithduration:animations, calayer's addanimation:forkey: triggered. did method swizzling , output info in it.
#import "calayer+swizzling.h" #import <objc/runtime.h> @implementation calayer (swizzling) + (void)load { method_exchangeimplementations(class_getinstancemethod([calayer class], @selector(addanimation:forkey:)), class_getinstancemethod([calayer class], @selector(hackedaddanimation:forkey:))); } - (void)hackedaddanimation:(caanimation *)animation forkey:(nsstring *)key { [self hackedaddanimation:animation forkey:key]; if ([animation iskindofclass:[cabasicanimation class]]) { cabasicanimation *basicanimation = (cabasicanimation *)animation; if ([basicanimation.keypath isequaltostring:@"transform"]) { catransform3d transform = [basicanimation.fromvalue catransform3dvalue]; if (basicanimation.fromvalue) { nslog(@"fromvalue:%@", nsstringfromcgaffinetransform(catransform3dgetaffinetransform(transform))); } if (basicanimation.tovalue) { nslog(@"tovalue:%@", nsstringfromcgaffinetransform(catransform3dgetaffinetransform(transform))); } if (basicanimation.byvalue) { nslog(@"byvalue:%@", nsstringfromcgaffinetransform(catransform3dgetaffinetransform(transform))); } nslog(@"timingfunction:%@", basicanimation.timingfunction); nslog(@"duration:%f", basicanimation.duration); } } } @end nothing happened. if show uialertview, triggered.
uialertview *alertview = [[uialertview alloc] initwithtitle:@"title" message:@"" delegate:nil cancelbuttontitle:@"cancel" otherbuttontitles:@"", nil]; [alertview show]; this result:
2013-08-16 17:28:39.693 test[81840:c07] fromvalue:[0.01, 0, 0, 0.01, 0, 0] 2013-08-16 17:28:39.694 test[81840:c07] timingfunction:easeineaseout 2013-08-16 17:28:39.695 test[81840:c07] duration:0.200000 2013-08-16 17:28:39.897 test[81840:c07] fromvalue:[1.1, 0, 0, 1.1, 0, 0] 2013-08-16 17:28:39.897 test[81840:c07] timingfunction:easeineaseout 2013-08-16 17:28:39.899 test[81840:c07] duration:0.100000 2013-08-16 17:28:40.000 test[81840:c07] fromvalue:[0.9, 0, 0, 0.9, 0, 0] 2013-08-16 17:28:40.000 test[81840:c07] timingfunction:easeineaseout 2013-08-16 17:28:40.001 test[81840:c07] duration:0.100000
i'm assuming it's being treated implicit animation on layer in case swizzle actionforkey: instead.
Comments
Post a Comment