延迟声明执行目标c

时间:2010-09-30 01:55:41

标签: iphone objective-c

我有以下代码但不起作用

[self performSelector:@selector([A1 setImage:[UIImage imageNamed:@"m1.10002.png"] forState:UIControlStateNormal])
                       withObject:A1 afterDelay:0.1];

如何在一段时间后执行以下语句

[A1 setImage:[UIImage imageNamed:[NSString stringWithFormat:@"m1.a0009.png"]] forState:UIControlStateNormal];

我想设置一系列5个图像来执行小动画效果。但我不确定它是如何完成的。

由于

3 个答案:

答案 0 :(得分:3)

在您的代码中使用这样的方法:

- (void) blahBlahWhatever {
    [A1 setImage:[UIImage imageNamed:[NSString stringWithFormat:@"m1.a0009.png"]] forState:UIControlStateNormal];
}

然后使用

[self performSelector:@selector(blahBlahWhatever) afterDelay:0.1];

来称呼它。


如果要使用自定义NSString调用该方法,只需允许NSString输入:

-(void) blahBlahWhatever:(NSString *)string {
    [A1 setImage:[UIImage imageNamed:string] forState:UIControlStateNormal];
}

然后使用

NSString *fileString = @"m1.a0009.png"; // or whatever this might be
[self performSelector:@selector(blahBlahWhatever:) withObject:fileString afterDelay:0.1];

从您的代码中调用它。

答案 1 :(得分:1)

我想你想看一下UIView的animateWithDuration:动画:完成:

(我假设A1是一个按钮或类似的东西)

这样的东西
animate(UIButton b, int state, int last_state) {
  if (state < last_state) {
    float duration = 1.0 / 30.0;
    [b animateWithDuration:1.0/30
      animations: ^{ [UIImage imageNamed:[NSString stringWithFormat:@"m%d.a0009.png", state]]; }
      completion: ^{ animate(b, state++, last_state); }];
  }
}

要从m0到m4动画图像调用动画(A1,0,5)。你可能想要一组更好的参数等(我也选择30FPS,你可能会喜欢10或20 ......或者说这个参数)。

答案 2 :(得分:0)

您应该将剪辑代码包装在方法中,然后在@Selector

中调用此方法