2012-12-10 50 views
0

所以,我在我的一個方法中生成了一段代碼,它生成一個新的隨機單詞,將它顯示在Web視圖中,然後爲從當前單詞轉換到新單詞的頁面捲曲添加動畫。理想情況下,這應該消除舊視圖,並在下面的頁面上顯示新視圖。動畫未執行前的代碼直到動畫完成?

目前,動畫發生了(頁面捲曲),然後新的內容在完成捲曲之後加載(意味着捲曲下面的頁面上有舊字,直到捲曲完成,此時新的一個出現)。我不知道這是爲什麼,任何人都可以向我解釋?是否有關數據不能從我的[dictionary]對象快速返回,也許?

NSString *word = [dictionary randomWord]; 
NSString *htmlDefinition = [dictionary getHTMLFor: word]; 
[self.randomDefinitionWebView loadHTMLString: htmlDefinition baseURL: nil]; 

[UIView transitionWithView: self.randomDefinitionWebView 
         duration: 1.5 
         options: UIViewAnimationOptionTransitionCurlDown 
        animations:^{ } 
        completion: nil]; 
} 

回答

3

UIWebview在另一個線程中加載HTML。當它結束時,它告訴它的代表webViewDidFinishLoad:

所以動畫將首先顯示。

您可以將網頁視圖的委託設置爲自己和webViewDidFinishLoad:

+0

做動畫,這恐怕沒有奏效。該代碼肯定是在'webViewDidFinishLoad'方法中執行的,但是在動畫完成之前它仍然不加載新的內容。這與頁面捲曲的工作方式有關嗎? – Luke

+0

Webviews在完成加載後還需要一兩秒的時間進行渲染。你可以嘗試在做動畫之前添加一個延遲時間來顯示。 –