2010-11-22 57 views
2

嗨,我完全與CGAffineTransform動畫混淆。我想要做的就是將精靈從右邊的位置移動到左邊的位置。當它停止時,我想「重置」它,即將其移回到它開始的位置。如果應用程序退出(使用多任務處理),我想在開始時重新設置位置並重復動畫。iPhone幫助與動畫CGAffineTransform重置?

這是我在用,使動畫..

[UIImageView animateWithDuration:1.5 
            delay:0.0 
           options:(UIViewAnimationOptionAllowUserInteraction | 
              UIViewAnimationOptionCurveLinear 
             ) 
           animations:^(void){ 

            ufo.transform = CGAffineTransformTranslate(ufo.transform, -270, 100); 

           } 
           completion:^(BOOL finished){ 
            if(finished){ 
             NSLog(@"ufo finished"); 

             [self ufoAnimationDidStop]; 
            } 
           }]; 

據我瞭解的CGAffineTransforms只是視覺上讓精靈看起來像它的移動,但實際上並沒有移動。因此,當我嘗試「重置」位置使用

ufo.center = CGPointMake(355,70);

它什麼都不做。

我有什麼工作,如果我叫

ufo.transform = CGAffineTransformTranslate(ufo.transform,270,-100);

它重置。問題是,如果我在動畫中途退出應用程序,那麼當它重新啓動時,它不一定從一開始就開始,並且它不會到正確的位置,它基本上會變得瘋狂!

有沒有辦法刪除應用到它的任何轉換?我正在考慮只使用計時器,但這種方法應該工作時,這似乎很愚蠢。我一直在努力這一段時間,所以任何幫助將不勝感激。

由於

回答

4

將變換應用於的視圖實際上不改變中心或視圖的邊界;它只是改變了視圖在屏幕上顯示的方式。您想將變換設置回CGAffineTransformIdentity以確保它看起來像「正常」。您可以在開始動畫之前將其設置爲該動畫,並將其設置爲您希望動畫製作的動畫。

+0

非常感謝,我一直在努力奮鬥這麼久!有一個問題,我可以檢查一下在我稱之爲這一行之前是否應用了轉換 - 或者我甚至需要嗎?我想確保當應用程序變爲活動狀態時,所有動畫都會重置,但它們可能已經或可能未被轉換? – user157733 2010-11-22 22:27:09