我有多組按鈕,當點擊按鈕時,它會從原始位置移動到其設定位置。對象動畫後,我希望它從超級視圖中刪除。CAAnimation的「animationDidStop:」只能調用一次
這裏是我的animationDidStop代碼:
- (void) animationDidStop:(SKBounceAnimation *)animation finished:(BOOL)flag {
[self.cellImageViewGlobal removeFromSuperview];
NSLog(@"Animation didStop called");
}
所以,當我點擊了一個按鈕(這是self.cellImageViewGlobal),將動畫,那麼動畫之後,它會從上海華刪除。在繼續點擊或點擊我會做,self.cellImageViewGlobal不會被從超級視圖中刪除。我發現這個函數只能通過我的日誌調用一次。
我把我自己作爲一個viewDidLoad中代表:
- (void)viewDidLoad
{
[super viewDidLoad];
self.animateProduct.delegate = self; // animateProduct is the last animation being called in the CAAanimationGroup array
}
我也在我的動畫功能設置該委託。 我不明白我的代碼有什麼問題。我想每次點擊一個按鈕,動畫之後它都會調用「animationDidStop」函數。
順便說一句,我已經嘗試了多種方式或解決方案來解決它。首先是我用塊。該塊中的動畫完成後,將執行此:
completion:^(BOOL finished){
[self.cellImageViewGlobal removeFromSuperview];
}
但這種代碼不會等待在模擬器上的動畫來完成。我在Paul Hegarty的演講中瞭解到,在動畫代碼中,它完成了代碼的執行,但它不會等待動畫本身(投影到模擬器中)完成。
希望你能幫助我。謝謝!
我在我的項目中使用了ARC。在我的塊中的動畫完成後,我可以通過使用alpha來解決它。動畫仍然出現,但它隱藏。這解決了我的問題,雖然它只是隱藏的。我似乎無法解決它,當我使用didAnimationStop方法。順便你的項目祝你好運。感謝您給我解決方案。可能我下次可以使用它! – angelmacaraig
完成:^(完成BOOL){cellImageView.alpha = 0.0000000000000000000001; [cellImageView removeFromSuperview]; }]; //這是我的代碼 – angelmacaraig