2013-04-30 14 views
2

我在viewDidLoad方法中向我的視圖控制器的根視圖添加了一些子視圖。不久之後,當某個事件發生時,我只是簡單地改變其中一個視圖的背景顏色。直到子視圖重新佈局(willLayoutSubviews被調用)後,此更改纔可見。如果更改設備的方向或等待10-20秒,則會發生這種情況。我在修改後在子視圖上打電話setNeedsDisplay,但沒有幫助。總之,我只是想在某個事件發生後改變一個子視圖的背景顏色,而且我希望這些更改可能在一秒鐘內在屏幕上可見。我錯過了什麼?UIView - 子視圖內容不會重繪,直到子視圖再次佈局。爲什麼?

注意:萬一它很重要,有問題的視圖的超級視圖是GLKView

+1

你是否偶然從後臺線程執行這些更新? – jszumski 2013-04-30 20:41:10

+0

想想吧,我正在執行代理方法回調中的這些更新,事實上,這是在異步調度隊列中運行的。我現在使用'performSelectorOnMainThread'來確保更新在主線程中執行。隨意添加答案作爲答案,我會將其標記爲正確。謝謝! – bsirang 2013-04-30 21:34:11

回答

2

確保您只是從主線程進行UI更新。您可以通過使用performSelectorOnMainThread:withObject:waitUntilDone:dispatch_async(dispatch_get_main_queue(), ^{/* your UI modifying code here */});來解決此問題。

+0

我正在使用'performSelectorOnMainThread:withObject:waitUntilDone:',它現在按預期工作。 – bsirang 2013-04-30 21:44:27

相關問題