performSelector:withObject:afterDelay:执行没有动画的动画

时间:2013-11-18 07:49:16

标签: ios animation performselector animatewithduration

我有一个performSelector:withObject:afterDelay:调用的方法,它执行持续时间的动画。所以在延迟之后,动画会运行但没有动画持续时间:

[self performSelector:@selector(animate:) withObject:[NSNumber numberWithInt:-1] afterDelay:4.0];

-(void) animate:(int) mode
{
[UIView animateWithDuration:0.2
                      delay:0.0
                    options:UIViewAnimationOptionCurveEaseIn
                 animations:^{
                     self.center = CGPointMake(160.0, 568.0 + mode*height/2);
                 }
                 completion:nil];
}

另外,我无法在completion:中嵌套动画,因为它阻止了UI交互。

2 个答案:

答案 0 :(得分:0)

我已经尝试过你的代码和动画持续时间很好但我认为你应该修复(int)模式部分。你不能以这种方式将NSNumber转换为int。你的方法必须是 - (void)animate:(NSNumber *)模式,然后你可以使用[mode intValue]强制转换为int。

答案 1 :(得分:0)

您不能将performSelector:withObject:afterDelay:animate:一起使用,因为它的参数不是对象指针类型。