objective-c - 在动画完成之前不执行动画之前的代码?

标签 objective-c ios multithreading core-animation

因此,我在我的一种方法中使用了这段代码,它会生成一个新的随机词,将其显示在 WebView 中,然后为页面 curl 设置动画以从当前词过渡到新词。理想情况下,这应该 curl 旧 View ,并在下面的页面上显示新 View 。

目前,动画发生(页面 curl ),然后在 curl 完成后加载新内容(意味着 curl 下方的页面上有旧词,直到 curl 完成,此时新内容出现)。我不知道这是为什么,有人能给我解释一下吗?这可能与我的 [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];
}

最佳答案

UIWebview 在另一个线程中加载 HTML。当它完成时,它告诉它的委托(delegate) webViewDidFinishLoad:

因此动画将首先显示。

您可以将 webview 的委托(delegate)设置为您自己,并在 webViewDidFinishLoad: 中执行动画

关于objective-c - 在动画完成之前不执行动画之前的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13803506/

相关文章:

ios - 用自定义 View 替换字符串

iphone - ios中的webservice中的多个参数

ios - Alpha 混合与相同的透明图像

objective-c - 向 NSMutablearray 添加数据时出现 EXC_BAD_ACCESS

c++ - 如何查找 C/C++ 中线程使用的总时间?

ios - 代码 4 : some button titles not visible in iOS simulation

ios - 如何在 Singleview 应用程序中添加 AppDelegate 主窗口 xib

objective-c - performSegueWithIdentifier 的调用顺序

c# - 多个线程从 Lookup<TKey, TElement> 中读取是否安全?

c++ - 访问另一个 QThread 中的对象成员