核心动画,意外的动画位置和hitTest值

我用的时候:

CALayer *hitLayer = [[self.view.window.layer presentationLayer] hitTest:pointOfTouch]; 

然后我探索图层,发现当前动画的所有属性都设置为最终状态。

我正在测试的图层是iOS 4.3中UIImageView的CALayer。 我还有一个关于UIImage视图的IBOutlet。 所以我做了同样的测试:

  CALayer *l = [self.topLeft.layer presentationLayer]; NSLog(@"presentation layer frame for eloise is : %@", [self cgRectDescription:l.frame]); NSLog(@"and xPosition = %.2f, yPosition = %.2f & zPosition = %.2f", l.position.x, l.position.y, l.zPosition); 

我仍然得到相同的结果。
我正在测试这个(void)touchesBegan:withEvent:当图像移动时。
这是我正在使用的动画

 [UIImageView animateWithDuration:aDuration delay:0 options:UIViewAnimationOptionCurveEaseIn | UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionBeginFromCurrentState animations:^(void) { aIv.center = imageStartingPoint; aIv.layer.zPosition = 0; imageStartingPoint = CGPointZero; centerImage = nil; 

CABasicAnimation * ba = [CABasicAnimation animationWithKeyPath:@“shadowOffset”]; ba.fromValue = [NSValue valueWithCGSize:aIv.layer.shadowOffset]; ba.toValue = [NSValue valueWithCGSize:CGSizeMake(0,0)]; aIv.layer.shadowOffset = CGSizeMake(0,0); ba.duration = aDuration; ba.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; [aIv.layer addAnimation:ba forKey:@“shadowOffset”]; ba = [CABasicAnimation animationWithKeyPath:@“shadowRadius”]; ba.fromValue = [NSNumber numberWithFloat:aIv.layer.shadowRadius]; ba.toValue = [NSNumber numberWithFloat:0]; aIv.layer.shadowRadius = 0; ba.duration = aDuration; ba.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; [aIv.layer addAnimation:ba forKey:@“shadowRadius”]; } completion:NULL];

这可能有点简单,但我不在乎,谢谢,

我有一个解决方案。

我只是探索了一个想法,我意识到我没有检查CABasicAnimation(s)在表示层中表现正确的价值……以及……它们是。
我必须在显式动画中做那些2,因为不支持隐式。

所以我为图像中心和zPosition制作了一些更基本的动画。 现在我在表示层中有了这些信息。

所以现在我可以得出结论,如果你需要获得一个有效的表示层,你绝对需要用CAAnimation做EXPLICIT动画。

我有点难过,因为我喜欢UIView animateWithDuration:…