我試圖在我的CAAnimation完成後執行完成塊。不過,在我的動畫完成之前,似乎動畫塊被調用。動畫仍然正確發生。立即調用CATransaction完成
[CATransaction begin];
[self.view.layer addAnimation:self.dropAndBounceAnimation forKey:@"appearance"];
[CATransaction setCompletionBlock:completionBlock];
[CATransaction commit];
dropAndBounceAnimation是position.y上的CAKeyFrameAnimation,具有固定的持續時間。
的確是這樣,因爲每[文檔】(https://developer.apple.com/library/ Mac/DOCUMENTATION/GraphicsImaging/Reference/CATransaction_class/Introduction/Introduction.html#// apple_ref/occ/clm/CATransaction/setCompletionBlock :):「保證被調用的完成塊對象(在主線程上)儘快此交易組隨後添加的所有動畫*已完成(或已被刪除)。「。關鍵部分是「隨後添加」。 – albertamg
@albertamg然而,它也表示'如果在當前事務組被提交之前沒有添加動畫(或者完成塊被設置爲不同的值),該塊將立即被調用。「# – iwasrobbed
@iWasRobbed是,並且解釋爲什麼在動畫完成之前調用該塊(如果在將動畫添加到事務組之後設置了該塊)。 – albertamg