簡體   English   中英

如何正確更改 UIButtons 的標題顏色?

[英]How do I properly change the Title Color of UIButtons on the fly?

問題:

我想“播放”一系列按鈕按下並播放與播放的每個按鈕相關的聲音。

目前,我可以“回放”聲音,但我還想在回放聲音的同時簡單地更改 UIButtons 的標題顏色。

我編寫了循環遍歷指示按下了哪些按鈕的數組的代碼。 在這個 for 循環中,聲音可以正確播放,但在循環方法退出之前,按鈕標題都不會改變顏色。

即在循環期間播放聲音,但直到循環完全退出並且代碼退出該方法之后,標題文本才會改變顏色。 我通過設置斷點並觀察行為來確定這一點。

我在屏幕上看到的是 - 我按下按鈕開始序列,播放聲音,然后在聲音停止播放后,按鈕立即改變它們的標題顏色。

我怎樣才能讓每個按鈕只在聲音播放時改變它的標題顏色?

我希望這有某種意義,感謝您花時間閱讀所有這些內容。 :)

如果你循環播放所有的聲音和動畫,循環執行得太快,你無法控制動畫的時間。

相反,您可以使用NSTimer並在每次計時器觸發時謹慎地執行每個聲音和 animation。

我假設您的意思是即使您的代碼在正確的位置正確,您的按鈕也不會在正確的時間改變顏色? 那是因為繪圖沒有立即更新,所以你需要這樣的東西:

[self performSelectorOnMainThread:@selector(changeColor) withObject:nil waitUntilDone:YES];

- (void)changeColor
{
    [UIButton setTitleColor:YOUR_COLOR forState:UIControlStateNormal];
}

這將暫停程序,直到顏色更新並重新繪制,使其正確顯示。

您可以嘗試讓聲音在后台線程中播放,同時 UI 更新在主線程中繼續。

[self performSelectorInBackground:@selector(playSound:) withObject:sound];

playSound中,不要忘記建立一個新的自動釋放池,這樣就不會泄漏 memory。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM