即時通訊我試圖在我的屏幕上突出按鈕,我想改變他們的背景圖像,等待幾秒鐘,恢復背景圖像和下一個按鈕相同。屏幕上的高亮按鈕
從來就寫了這個代碼:
-(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我可以看到,該方法仍然在運行,但上的按鈕沒有變化。
我該如何做到這一點?
感謝和抱歉我的英語不好。
需要在主線程上對UI進行更改。如果在任何其他線程上進行創建,它們將產生不可預知的結果。你可以使用計時器來做同樣的事情。 – Amar
有沒有答案幫助你?如果是這樣,請將其標記爲已接受的答案,或者上傳它是否有幫助,但不是正確的答案。這將幫助您建立聲譽,並鼓勵他人回答您的問題。否則,您可以對答案或您的問題發表評論以獲得更多清晰度。謝謝! – stevekohls