我创建了一个具有自定义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];
所以,我的问题是,有没有办法在动画中重新计算阴影?
由于
答案 0 :(得分:2)
UIView
动画并不总是允许您为CALayer
属性制作动画。请尝试使用CABasicAnimation
。
答案 1 :(得分:1)
您可以将CGPathREf传递给toValue
theAnimation.toValue = (id)[UIBezierPath bezierPathWithRect:newRect].CGPath;
请参阅this post