我有一些嵌套的 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) {}];
即只需在安排第一个动画的同时安排第二个动画,但告诉它在您知道第一个动画将完成之前不要开始。
一旦安排好事情,核心动画就不会被主队列事件阻止,因此您可以在一秒钟后忙碌,而第二件事仍然会在第一件事完成后立即开始。
关于iphone - UIView 动画在主线程上被阻止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18794429/