1

我有一个名为 by 的方法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 交互。

4

2 回答 2

0

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

于 2013-11-18T08:26:30.290 回答
0

你不能使用performSelector:withObject:afterDelay:withanimate:因为它有一个不是对象指针类型的参数。

于 2013-11-19T22:43:17.980 回答