2010-01-13 52 views
3

我從非UI線程/函數在uiscrollview上繪製一組圖像。但是隻有在所有圖像完成繪製後才顯示它。爲了繪製所有的圖像,我寫了一個函數,這就是所謂的非UI線程。我寫這條線的功能如何從非UI線程/函數(iPhone)強制更新UIScrollView的屏幕

[self performSelectorOnMainThread:@selector(updateUI) withObject:nil waitUntilDone:NO]; 

內,已經寫了以下功能

- (void)updateUI 
{ 
[myScrollView setNeedsDisplay]; 
} 

給出但沒有效果,甚至當我可以看到控制傳遞給函數的。現在做什麼?

回答

1

好的,我有一個解決方案。即使我不喜歡解決方案,它的工作也很完美。我改變了我的功能。

- (void)updateUI 
{ 
for(UIView *subview in [myScrollView subviews]) 
{ 
    [myScrollView bringSubviewToFront:subview]; 
} 
} 
3

根據我的經驗,所有繪圖操作都必須在UI線程上執行,即使它們不可見,甚至在添加視圖層次結構時也必須執行。 如果你找到一個方法,我會很想知道,但:-)

+0

另一件事是,如果我只是在主線程(即scrollview)做一些動作,我能夠看到他們每個都被加載。但問題是,我不能告訴用戶一直移動屏幕以查看它加載。:) – wolverine 2010-01-13 14:48:01

+0

「或甚至添加到視圖層次結構」這對我來說很關鍵,謝謝! – 2012-03-09 03:45:26

0

也許你也應該打電話setNeedsLayout和/或layoutIfNeeded

+0

做了兩個,也在組合,但沒有用。有人幫助我PLzz ... – wolverine 2010-01-14 06:04:52

0

嘗試類似performSelectorOnMainThread:withObject:waitUntilDone:

+0

但我已經嘗試過了,你可以在上面的代碼中看到它。 – wolverine 2010-01-14 03:32:55

+0

Doh。昨晚一定熬夜太晚..... – Nimrod 2010-01-14 16:43:44