2012-12-09 65 views
2

this post作者說我們可以在切換標籤頁viewWillAppear後重新開始動畫。iOS切換標籤頁後重新啓動動畫

我在viewWillAppearviewDidAppear中都調用了我的startAnimation,但仍然失敗。

下面是我的代碼的一部分。

- (void)startAnimation { 
    [UIView setAnimationsEnabled:YES]; 
    [UIView animateWithDuration:0.5f 
      delay:0.0f 
      options:UIViewAnimationOptionAutoreverse|UIViewAnimationOptionRepeat 
      animations:^(void){ 
       self.foreground.transform = CGAffineTransformMakeTranslation(0.0f, 5.0f); 
      } 
      completion:nil]; 
} 

動畫完美地工作時,通過調用viewDidLoadstartAnimation第一次顯示,但切換到其他選項卡後,它永遠不會奏效。

在應用程序從後臺重新啓動後,即使我註冊了UIApplicationWillEnterForegroundNotificationstartAnimation觀察者,它也不工作。

請幫助我,我是iOS新手,非常感謝。

回答

1

只有在視圖控制器第一次加載時纔會調用viewDidLoad方法。

如果您希望在從其他視圖控制器返回到此視圖時運行動畫,則應該在viewWillAppear中調用動畫方法,而不是viewDidLoad。

爲了讓動畫回到先前的值並重新生成動畫,首先要將視圖的變換設置爲標識(將其設置爲起點),然後調用您的animationWithDuration方法。

您可能會發現,更輕鬆地爲視圖的frame.origin或center屬性設置動畫而不是更改轉換。將轉換與旋轉,縮放更改等結合起來時,更改轉換變得複雜。另外,當transform屬性不是==標識轉換時,frame屬性不再有效。

+0

我真的不明白你在說什麼......正如我所說的,我在'viewWillAppear'中調用了'startAnimation'。我想知道爲什麼它不起作用。 –

+1

我終於明白你的意思是「將你的觀點轉換爲身份」。對於那些不理解的人,我在'startAnimation'的開頭添加了'self.foreground.transform = CGAffineTransformIdentity;'。這是動畫工作必需的**。 –

+0

謝謝Yi Huang,你的第二條評論爲我解決了這個問題。 – djskinner