我有以下代码但不起作用
[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个图像来执行小动画效果。但我不确定它是如何完成的。
由于
答案 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
中调用此方法