0

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

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

    }];
}];

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

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

4

1 回答 1

1

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

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

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

一旦安排好事情,Core Animation 就不会被主队列活动阻塞,因此您可以在一秒钟后忙碌,而第二件事仍然会在第一件事完成后立即开始。

于 2013-09-13T21:38:47.550 回答