我有一个案例,我正在绘制形状,例如三角形(A,B,C点)。现在我想要设置它的动画,使得A,B,C点朝向X,Y,Z点移动。(让我们说按钮点击)
我在自定义视图中使用drawRect:方法进行绘制。我不希望我的视图移动,我宁愿我的绘图移动(因为我有多个绘图)。
任何指针?任何相关文章?
此致 穆斯塔法
答案 0 :(得分:1)
核心动画是这类事物的一个很好的解决方案。您有CAShapeLayer,它允许您根据路径绘制形状,并且您可以使用基本动画或关键帧动画进行动画处理。您可以在按钮点击中执行以下操作:
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position"];
[animation setFromValue:[NSValue valueWithCGPoint:CGPointMake(0.0, 0.0)]];
[animation setToValue:[NSValue valueWithCGPoint:CGPointMake(320.0, 480.0)]];
[animation setDuration:2.0f];
[shapeLayer addAnimation:animation forKey:@"positionAnimation"];
这将在两秒的过程中将图层从点0.0,0.0(左上角)动画到320.0,480.0(右下角)。将动画添加到图层时,它将立即开始播放。如果您想要旋转动画(不确定来自帖子),您可以这样做:
CABasicAnimation *rotationAnimation;
rotationAnimation = [CABasicAnimation
animationWithKeyPath:@"transform.rotation.z"];
[rotationAnimation setFromValue:DegreesToNumber(0)];
[rotationAnimation setToValue:DegreesToNumber(360)];
[rotationAnimation setDuration:2.0f];
[rotationAnimation setRepeatCount:10000]; // keep spinning
[shapeLayer addAnimation:rotationAnimation forKey:@"rotate"];
DegreesToNumber是一个辅助函数,它将度数转换为弧度并返回一个NSNumber对象:
CGFloat DegreesToRadians(CGFloat degrees)
{
return degrees * M_PI / 180;
}
NSNumber* DegreesToNumber(CGFloat degrees)
{
return [NSNumber numberWithFloat:
DegreesToRadians(degrees)];
}
网上有很多关于核心动画的文章,但这应该可以让你开始。如果您需要澄清,请告诉我。