我正在为CALayer制作阴影路径.
框架正确调整大小,但阴影不会缩放.
相反,阴影从最终大小CGSize(20,20)开始,并在整个动画中保持,即使我将shadowPath设置为初始值
[CATransaction begin]; [CATransaction setAnimationDuration: 0]; [CATransaction setDisableActions: TRUE]; layer.frame = CGRectMake(0,10,10); layer.shadowPath = [UIBezierPath bezierPathWithRect:layer.bounds].CGPath; [CATransaction commit]; [CATransaction begin]; [CATransaction setValue:[NSNumber numberWithFloat:10] forKey:kCATransactionAnimationDuration]; layer.frame = CGRectMake(0,20,20); layer.shadowPath = [UIBezierPath bezierPathWithRect:tile.bounds].CGPath; [CATransaction commit];
解决方法
起初,小阴影与阴影.
按下按钮时,方形和阴影一起变大.
主要代码如下:
[CATransaction begin]; [CATransaction setAnimationDuration:5.0]; CAMediaTimingFunction *timing = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; [CATransaction setAnimationTimingFunction:timing]; layer.frame = CGRectMake(0,100,100); [CATransaction commit]; CABasicAnimation *shadowAnimation = [CABasicAnimation animationWithKeyPath:@"shadowPath"]; shadowAnimation.duration = 5.0; shadowAnimation.fromValue = (id)[UIBezierPath bezierPathWithRect:CGRectMake(0,50,50)].CGPath; shadowAnimation.toValue = (id)[UIBezierPath bezierPathWithRect:CGRectMake(0,100)].CGPath; [layer addAnimation:shadowAnimation forKey:@"shadow"];
您可以从GitHub下载此项目并运行它.
https://github.com/weed/p120812_CALayerShadowTest
这个问题对我来说很难!