如何使用performSelector:afterDelay:做动画后?

时间:2014-03-05 21:39:41

标签: ios objective-c cocoa-touch

让我说清楚。我正在使用一系列由用户操作触发的动画。

只有当我执行performSelector时:afterDelay:如果在动画之后完成,它将不起作用。

如果我正在进行OS X开发,我不知道这个答案对我是否有用,但它可能是一个线索:https://stackoverflow.com/a/1078216/676822

有人能帮帮我吗? 感谢

2 个答案:

答案 0 :(得分:0)

如果您想在动画结束时采取某些操作,相应的代码如下所示:

[UIView animateWithDuration:0.50 animations:^{
    // your changes to animate here
 } completion:^(BOOL completed) {
    // your code after animation here
 }];

animateWithDuration的其他几个变种允许动画本身的更多功能。

答案 1 :(得分:0)

从我可以收集到的内容来看,您正在尝试执行一系列动画,每个动画在开始之前都有延迟。因此,您可以将调用嵌套到performSelector:afterDelay:,而不是使用animateWithDuration:delay:options:animations:completion:来调用动画:

[UIView animateWithDuration:1.0f delay:2.0f options:UIViewAnimationOptionCurveEaseIn animations:^{

     //your first animations

} completion:^(BOOL finished) {

     [UIView animateWithDuration:1.0f delay:2.0f options:UIViewAnimationOptionCurveEaseIn animations:^{

         //your second animations

     } completion:^(BOOL finished) {

     }];
}];

此方法接受额外的delay参数,这听起来像你想要的。而且,由于你的第二个动画是在第一个完成块中,动画将按顺序发生。