UIView动画,转换layer.shadowPath

时间:2011-03-04 00:32:54

标签: iphone ios

我创建了一个具有自定义shadowPath的UIImageView。该视图将在屏幕上左右移动,但我需要shadowPath与图像层本身进行不同的转换。这可能吗?移动图像本身是有效的,当我执行以下操作时阴影也会移动:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
im.center = location;
[UIView commitAnimations];

但是如果我尝试在“commitAnimations”之前添加一个图层转换,阴影就会立即采用该属性,例如:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
im.center = location;
im.layer.shadowPath = [self createPerspectiveShadow:im]; //this will not animate
[UIView commitAnimations];

所以,我的问题是,有没有办法在动画中重新计算阴影?

由于

2 个答案:

答案 0 :(得分:2)

UIView动画并不总是允许您为CALayer属性制作动画。请尝试使用CABasicAnimation

答案 1 :(得分:1)

您可以将CGPathREf传递给toValue

theAnimation.toValue = (id)[UIBezierPath bezierPathWithRect:newRect].CGPath;

请参阅this post