2013-04-18 70 views
0

比方說,我做這樣的事情:允許UI更新的iOS

[MBProgressHUD showHUDAddedTo:self.view animated:YES]; 
[self methodThatTakesLotsOfTime]; 
[MBProgressHUD hideHUDForView:self.view animated:YES]; 

這將不會允許足夠的時間HUD動畫並顯示。使用sleep(100)或NSTimer只會增加該問題。我無法在主隊列上運行該方法。更不用說dispatch_get_current_queue()已被iOS 6.0+棄用。我一定是失去了一些東西大

+0

有什麼問題?在這期間是否要防止用戶互動?或者是你不想在動畫結束之前啓動'方法'?或者是什麼? – matt

+0

我想在HUD打開後運行該方法(即完成動畫) – vqdave

+0

好的,所以這裏的問題我們不知道這個MBProgressHUD是什麼。他們需要等待直到動畫完成。 – matt

回答

0

您可以嘗試使用交易完成處理程序:

[MBProgressHUD showHUDAddedTo:self.view animated:YES]; 
[CATransaction setCompletionBlock: ^{ 
    [self methodThatTakesLotsOfTime]; 
}]; 

但實際上,這只是權宜之計。這取決於您使用的代碼的作者是否給予您使用完成塊進行動畫處理的方法。