pro*_*ock 6 core-animation objective-c
我正在为阴影路径制作动画CALayer.
框架正确调整大小,但阴影不会缩放.
相反,阴影从最终大小开始,CGSize(20,20)并在整个动画中保持,即使我将shadowPath设置为初始值
[CATransaction begin];
[CATransaction setAnimationDuration: 0];
[CATransaction setDisableActions: TRUE];
layer.frame = CGRectMake(0,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,0,20,20);
layer.shadowPath = [UIBezierPath bezierPathWithRect:tile.bounds].CGPath;
[CATransaction commit];
Run Code Online (Sandbox Code Playgroud)
起初,小阴影与阴影.

按下按钮时,方形和阴影一起变大.

主要代码如下:
[CATransaction begin];
[CATransaction setAnimationDuration:5.0];
CAMediaTimingFunction *timing = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
[CATransaction setAnimationTimingFunction:timing];
layer.frame = CGRectMake(0,0,100,100);
[CATransaction commit];
CABasicAnimation *shadowAnimation = [CABasicAnimation animationWithKeyPath:@"shadowPath"];
shadowAnimation.duration = 5.0;
shadowAnimation.fromValue = (id)[UIBezierPath bezierPathWithRect:CGRectMake(0, 0, 50, 50)].CGPath;
shadowAnimation.toValue = (id)[UIBezierPath bezierPathWithRect:CGRectMake(0, 0, 100, 100)].CGPath;
[layer addAnimation:shadowAnimation forKey:@"shadow"];
Run Code Online (Sandbox Code Playgroud)
您可以从GitHub下载此项目并运行它.
https://github.com/weed/p120812_CALayerShadowTest
这个问题对我来说很难!:)
| 归档时间: |
|
| 查看次数: |
2497 次 |
| 最近记录: |