我正在尝试执行一个简单的隐式 UIView 动画,如下所示:
[UIView animateWithDuration:2 delay:0 options:0 animations:^{
[_testView setFrame:endFrame];
} completion:nil];
但是,此动画会立即发生,而忽略持续时间参数。我在 -didMoveToWindow 中执行此操作,所以我知道我的视图位于窗口的视图层次结构中。我认为这是由于合并的动画,所以我强制动画在下一个运行循环中发生,如下所示:
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
[UIView animateWithDuration:2 delay:0 options:0 animations:^{
[_testView setFrame:endFrame];
} completion:nil];
}];
这很好用,但真的很难看,我不想到处都这样做。我的视图嵌套在另一个自定义视图层次结构的深处,所以我想弄清楚这个层次结构中的什么导致动画被合并。
我该如何调试?我基本上想知道当前正在执行哪些事务,因此我可以尝试取消嵌套它们,如果这有任何意义的话。或者让我知道我是否找错了树。