Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 延迟语句执行目标c_Iphone_Objective C - Fatal编程技术网

Iphone 延迟语句执行目标c

Iphone 延迟语句执行目标c,iphone,objective-c,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 stringWit

我有以下代码,但不起作用

[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个图像来执行一个小的动画效果。但我不确定这是怎么做到的


谢谢

在您的代码中有这样一种方法:

- (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];

从代码中调用它。

在代码中有如下方法:

- (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];

要从代码中调用它。

您应该将剪接代码包装在一个方法中,然后在@Selector中调用此方法。

您应该将剪接代码包装在一个方法中,然后在@Selector中调用此方法。

我想您应该看看UIView的动画宽度:动画:完成:

(我假设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); }];
  }
}
animate(UIButton b,int state,int last_state){
如果(状态<最后状态){
浮动持续时间=1.0/30.0;
[b动画宽度:1.0/30
动画:^{[UIImage ImageName:[NSString stringWithFormat:@“m%d.a009.png”,state]];}
完成:^{animate(b,state++,last_state);}];
}
}

要设置从m0到m4的图像动画,请调用animate(A1、0、5)。您可能需要一组更好的参数等等(我也选择了30FPS,您可能需要10或20…或者将其作为参数)。

我想您需要查看UIView的动画宽度:动画:完成:

(我假设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); }];
  }
}
animate(UIButton b,int state,int last_state){
如果(状态<最后状态){
浮动持续时间=1.0/30.0;
[b动画宽度:1.0/30
动画:^{[UIImage ImageName:[NSString stringWithFormat:@“m%d.a009.png”,state]];}
完成:^{animate(b,state++,last_state);}];
}
}

要设置从m0到m4的图像动画,请调用animate(A1、0、5)。您可能需要一组更好的参数等等(我也选择了30FPS,您可能需要10或20…或者将其作为参数)。

谢谢,如果我想根据调用的位置对字符串进行不同的设置,那很容易。我马上给你一个更新的答案。我已经添加了另一个解决方案。最后一行代码仍然是错误的。它使用的是OP提供的代码,而不是您之前提供的
@选择器(blahBlahWhatever:)
。@seanny94我为您修复了@dreamlax的注释(我假设您只是将其隔开)。:pThanks,如果我想根据调用的位置设置不同的字符串,那很简单。我马上给你一个更新的答案。我已经添加了另一个解决方案。最后一行代码仍然是错误的。它使用的是OP提供的代码,而不是您之前提供的
@选择器(blahBlahWhatever:)
。@seanny94我为您修复了@dreamlax的注释(我假设您只是将其隔开)。:P