如何实现UIViewAnimationOptionBeginFromCurrentState

时间:2012-01-06 13:29:36

标签: iphone core-animation uianimation

我有一段音频&相关游戏&停止按钮,当按下“播放”按钮时,我使用光标动画来表示在给定时刻音频样本中的哪一点。每当按下停止按钮时,我希望我的光标返回其初始坐标。我相信UIViewAnimationOptionBeginFromCurrentState可能是这样做的方法吗?我的初始动画代码如下,任何人都有关于如何使用UIViewAnimationOptionBeginFromCurrentState以将光标发送回原始坐标的任何提示?

感谢您提前提供任何帮助:)

    [UIView beginAnimations:@"MoveView" context:nil];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
    [UIView setAnimationDuration:2.0f];
    yellowBar.frame = CGRectMake(310, 20, 5, 100);
    [UIView commitAnimations];

3 个答案:

答案 0 :(得分:6)

如果您仍在使用beginAnimations / commitAnimations,请使用setAnimationBeginsFromCurrentState:。否则,您可以将UIViewAnimationOptionBeginFromCurrentState传递给animateWithDuration:delay:options:animations:completion:以获取options参数。

答案 1 :(得分:2)

Brian是对的,你有两种选择:

//Initialize newFrame here

[UIView animateWithDuration:0.5
                      delay:0.0
                    options:UIViewAnimationCurveEaseInOut | UIViewAnimationOptionBeginFromCurrentState //Multiple options
                 animations:^ {

                     [yourView setFrame: newFrame];
                 }
                 completion:^ (BOOL finished) {

                 }];

或者

//Initialize newFrame here

[UIView beginAnimations:nil context:nil];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:0.5];

    [yourView setFrame: newFrame];

[UIView commitAnimations];

答案 2 :(得分:0)

AFAIK您只能将该选项与基于块的动画一起使用(无论如何都鼓励您使用)。您使用animateWithDuration:delay:options:animations:completion:方法,描述为here