2012-12-10 51 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在完成加载后还需要一两秒的时间进行渲染。你可以尝试在做动画之前添加一个延迟时间来显示。 –