画面のボタンを目立たせようとしています。背景画像を変更し、数秒待ってから背景画像を復元し、次のボタンと同じようにします。
私はこのコードを書きました:
-(void)animateButtons
{
UILabel * lbl = [[UILabel alloc] initWithFrame:CGRectMake(0, scroll.frame.origin.y-20, [UIScreen mainScreen].bounds.size.width, 20)];
[lbl setTextAlignment:NSTextAlignmentCenter];
for(int c=0;c<arr.count&&animationRunning;c++)
{
MenuItem * m = [arr objectAtIndex:c];
[lbl setText:m.name];
MyButton * b = (MyButton*)[self.view viewWithTag:c+1];
NSMutableString * str = [[NSMutableString alloc]initWithString:m.image];
[str appendString:@"_focused.png"];
[b setBackgroundImage:[UIImage imageNamed:str] forState:UIControlStateNormal];
sleep(2.5);
str = [[NSMutableString alloc]initWithString:m.image];
[str appendString:@"_normal.png"];
[b setBackgroundImage:[UIImage imageNamed:str] forState:UIControlStateNormal];
if(c==arr.count-1)
{
animationRunning=false;
}
}
}
そのメソッドはこの方法で呼び出されるため、UI スレッドをブロックしません。
[NSThread detachNewThreadSelector:@selector(animateButtons) toTarget:self withObject:nil];
ただし、最初のボタンの背景を変更するだけで、その後は何も変更しません。
NSLog を使用すると、メソッドがまだ実行されていることがわかりますが、ボタンに変更はありません。
どうすればこれを達成できますか?
私の悪い英語に感謝し、申し訳ありません。