UIView动画被保留在主线程上

时间:2013-09-13 20:08:49

标签: iphone ios objective-c animation uiview

我有一些嵌套的UIView动画,如下所示:

[UIView animateWithDuration:1.0 animations:^{
    //Animation
}completion:^(BOOL success){
    [UIView animateWithDuration:1.0 animations:^{
        //More animation
    }completion:^(BOOL success){

    }];
}];

当线程上有其他活动时,内部动画偶尔会在开始之前有延迟。

我想知道是否有办法绕过这个,如果可以在这里使用GCD在后台线程上运行它?这是UI代码,所以也许不是。

1 个答案:

答案 0 :(得分:1)

如果答案不是很明显,那么解决问题的方法就是:

[UIView
    animateWithDuration:1.0
    animations:^{
         //Animation
    }];
[UIView
    animateWithDuration:1.0
    delay:1.0
    options:UIViewAnimationOptionCurveEaseInOut|UIViewAnimationOptionTransitionNone
    animations:^{
        //More animation
    }
    completion:^(BOOL success) {}];

即。只是在安排第一个动画的同时安排第二个动画,但是在你知道第一个动画完成之前告诉它不要开始。

一旦安排了事情,核心动画不会被主队列活动阻止,所以你可以在一秒钟之后忙碌,第二件事仍然会在第一件事完成后立即开始。