UIView 动画被保留在主线程上



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

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

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

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

如果答案

不是太明显,解决方法是:

[UIView
    animateWithDuration:1.0
    animations:^{
         //Animation
    }];
[UIView
    animateWithDuration:1.0
    delay:1.0
    options:UIViewAnimationOptionCurveEaseInOut|UIViewAnimationOptionTransitionNone
    animations:^{
        //More animation
    }
    completion:^(BOOL success) {}];
即,只需在安排第一个动画

的同时安排第二个动画,但告诉它不要开始,直到你知道第一个动画将完成。

安排好后,核心动画不会被主队列活动阻止,因此您可以在一秒钟后忙碌,第二件事仍将在第一件事完成后立即开始。

最新更新