我有一个UIButton我改变了它的图像两次。
这两项更改都有效,但只有执行了一项。
e.g。第一个语句更改图像并且可以看到,但仅当第二个语句未运行时才会看到。如果我只运行两个语句,则只能看到最后一次图像更改。
似乎跳过了第一次图像更改。
这些执行在计时器中运行,我在第二次图像更改时略有延迟,希望避免此问题。
即使我改变了延迟,看起来有足够的时间看到图像变化,也没有视觉上的变化。
如何避免此问题并更改UIButtons图像两次,使两个更改都可见?
编辑 - >
[A1 setImage:[UIImage imageNamed:fileString] forState:UIControlStateNormal];
[self performSelector:@selector(changeImage:withString:) withObject:A1 withObject:fileString2];
我称之为
-(void) changeImage: (UIButton *) button withString: (NSString *) string
{
[button setImage:[UIImage imageNamed:string] forState:UIControlStateNormal];
}
-(void) startInvocation: (UIButton *) button withString: (NSString *) string
{
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:
[self methodSignatureForSelector:@selector(changeImage:withString:)]];
[invocation setTarget:self];
[invocation setSelector:@selector(changeImage:withString:)];
[invocation setArgument:button atIndex:2];
[invocation setArgument:string atIndex:3];
[NSTimer scheduledTimerWithTimeInterval:0.15f invocation:invocation repeats:NO];
}
由于
答案 0 :(得分:1)
如果在同一事件循环中更改图像两次,则只能看到第二张图像。设置第一个图像然后启动NSTimer并对事件进行编程以设置第二个图像。你应该看到改变。
-(void)switchImage {
image.image = [UIImage imageNamed:@"dai00003.jpg"];
}
-(IBAction) run {
image.image = [UIImage imageNamed:@"dai00001.jpg"];
[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(switchImage) userInfo:nil repeats:NO];
}