【问题标题】:Image button not changing图片按钮不变
【发布时间】:2012-01-04 02:34:42
【问题描述】:

我正在尝试按顺序更改 25 个按钮的图像,更改之间有延迟时间,但它不起作用。

代码是:

do {
    if (Anterior > -1) {
        [[BtnArray objectAtIndex(Anterior)] setImage:Nil];
    }
    [[BtnArray objectAtIndex:(Gira[J])]
       setImage:[NSImage imageNamed:@"Encen.png"]];
    Anterior = Gira[J];
    Delay(Espera,&junk);
    ++J;
} while (J<25);

【问题讨论】:

  • 什么是AnteriorGiraDelay()Esperajunk? “它不起作用”是不够的。究竟是什么不工作?
  • 究竟是什么不起作用?延迟还是图像变化? Delay()函数是如何实现的?
  • 如果您的Delay() 只是对sleep 的调用,它将不起作用。 sleep 处于阻塞状态,UI 必须等待整个 do {} while () 循环终止才能更新。
  • Anterior 是一个整数,用于设置“关闭”然后是最后一个图像按钮。 Gira 是一个整数数组,用于控制哪些按钮将其图像设置为“开启”。我认为,Delay() 是一个objective-c 命令,用于延迟不同动作之间的时间。 Espera 是一个长时间设置 On 和 Off 图像之间的延迟时间的按钮。 junk 是一个很长的完成延迟命令的参数。图片按钮不变。只有延迟时间可以正常工作。
  • 好的 Cyrille,那我该怎么做呢?有人可以回答我吗?

标签: objective-c xcode image button


【解决方案1】:

尚未测试,但您可以尝试以下方法:

float delay = .2;
for (UIButton *btn in btnArray) {
    [btn performSelector:@selector(setImage:) withObject:[UIImage imageNamed:@"Encen.png"] afterDelay:delay];
    delay += .2;
}

或者用你自己的函数代替调用 btn

float delay = .2;
for (UIButton *btn in btnArray) {
    [self performSelector:@selector(changeImageForButton:) withObject:btn afterDelay:delay];
    delay += .2;
}

然后在该函数中执行:

[btn setImage:[UIImage imageNamed:@"Encen.png"] forState:UIControlStateNormal];

【讨论】:

  • 谢谢,但出现延迟时程序继续运行,不需要显示我的效果
  • 哦,你想阻塞主线程吗?如果是这样你可以试试 sleep(delay);
  • 我尝试过睡眠(timedelay),但电脑进入睡眠状态...XD...这个应用程序适用于mac而不是iphone。
猜你喜欢
  • 2018-01-21
  • 1970-01-01
  • 2013-12-08
  • 2015-03-30
  • 2018-03-11
  • 1970-01-01
  • 1970-01-01
  • 2022-12-13
  • 1970-01-01
相关资源
最近更新 更多