0

只是想澄清一件事,在 iOS 动画中,在线程中开始,但在开始之前,它是否等待主 UI 线程完成。一旦动画开始,你可以同时在主线程中做任何事情。

[UIView transitionFromView:currentVisible
                                toView:reuseablView
                              duration:0.6
                               options:(UIViewAnimationOptionTransitionCurlUp|UIViewAnimationOptionShowHideTransitionViews)            
                            completion:^(BOOL finished) {
                                }
                            }];

[self callFunction1];

在这里,动画以非常小的延迟开始,我认为它等待 funcioin1 调用。

任何想法?

4

2 回答 2

0

当您调用 时[self callFunction1],您正在阻塞主线程,因此任何动画都将停止(或者在这种情况下,尚未开始)。如果这是一个长时间运行的方法,您应该将其移至另一个线程。

于 2013-01-31T13:36:50.417 回答
0

动画应该在主线程上启动,尽管它实际上是在比您的应用程序访问的线程更高的线程上执行的,因此由于核心动画渲染服务器的工作方式,它仍然可以在阻塞时执行。确保您不要从某些网络代码中调用它。它在主线程上。如果第二种方法被阻止,动画可能会继续,但应用程序和触摸事件在被阻止时将不起作用。如果第二种方法阻塞的时间足够长,那么动画的延迟可能会导致它无法按时触发。但是一旦开始动画应该很好,即使下一个方法阻塞。我建议你不要阻塞主线程。如果您希望在动画之后调用该方法,它应该在完成块中。

最后为了证明这一点,您可以先调用动画,然后再调用睡眠。您的应用程序将无响应,但动画将继续。

于 2017-03-10T15:02:51.027 回答