0

我正在尝试实现以下动画:

    yourSubView.transform = CGAffineTransformMakeScale(0.01, 0.01);
[UIView animateWithDuration:0.4 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ 
//change time duration according to requirement
// animate it to the identity transform (100% scale)
yourSubView.transform = CGAffineTransformIdentity;
} completion:^(BOOL finished){
// if you want to do something once the animation finishes, put it here
}];

结合子视图的一些运动。我知道在核心动画中你可以组合动画,但你怎么能在 UIView 动画中做到这一点?

我可以将此代码从 UIView 动画转换为核心动画吗?

yourSubView.transform = CGAffineTransformMakeScale(0.01, 0.01);
[UIView animateWithDuration:0.4 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ 
//change time duration according to requirement
// animate it to the identity transform (100% scale)
yourSubView.transform = CGAffineTransformIdentity;
} completion:^(BOOL finished){
// if you want to do something once the animation finishes, put it here
}];
4

1 回答 1

2

您可以通过更改多个动画属性来组合动画。例如,您还可以设置 yourSubView.alpha,然后更改动画块内的 alpha。它将比例和 alpha 变化结合在一起。

要进行简单的翻译,请在您的动画块中尝试:

yourSubView.transform = CGAffineTransformTranslate(CGAffineTransformIdentity, 100.0, 100.0); 

这应该将比例设置回身份,同时在 x 和 y 方向移动 100px。

对于核心动画,使用 CAAnimationGroup 将两个核心动画分组会导致一个 CABasicAnimation 无法运行,这应该可以帮助您入门。您将使用 CAAnimationGroup 来组合多个动画,并且可以做一些漂亮的事情,包括 3D 旋转。

缩放:

CAKeyframeAnimation *scale = [CAKeyframeAnimation animationWithKeyPath:@"transform.scale"];
[scale setValues:[NSArray arrayWithObjects:[NSNumber numberWithFloat:0.01f],[NSNumber numberWithFloat:1.0f],nil]];
[scale setKeyTimes:[NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0],[NSNumber numberWithFloat:0.4f],nil]];

[mySubview.layer addAnimation:scale forKey:@"myScale"];
于 2012-08-27T19:48:16.547 回答