2013-05-30 82 views
0

我已經開始在我的新應用中使用CoreAnimation,我使用CA來製作一些很酷的動畫。但我是新來客觀C,這對我很困難,我面臨這個大問題:iOS核心動畫和ARC

我做了一個自定義的UIView:customView,我使用一個xib來獲取用戶界面並設置IBOutlet,自定義視圖是一個帶有UIImageView的簡單小視圖。

在我的視圖控制器我已經做了一個循環,插入severals customView,在這個循環中我同時設置了CAnimation的視圖,併爲ImageView的:

for (int i = 0 ; i < 8 ; i ++) 
{ 

    CABasicAnimation *balanceAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; 
    // ... set Animation here...  
    [customView.myImgView.layer addAnimation:balanceAnimation forKey:nil]; 

    CABasicAnimation *moveUp3Bis; 
    // ... setting animation here... 
    moveUp3Bis.repeatCount = 1; 

    [customView.layer addAnimation:moveUp3Bis forKey:nil]; 

} 

我只要把這個循環的觀點控制器後延時10秒電流控制器

所以意見得到動畫,移動和走在主窗口的旁邊,但很長一段時間後,動畫越來越慢......

我當然明白,我的循環添加到堆棧中Ø許多customView,認爲不釋放(可能是因爲動畫仍然在?)

我認爲這意見將一段時間後,被釋放,但我認爲視圖將被移動,直到永遠。 可能是我需要設置一個指向我的視圖的指針並在延遲後釋放它? 我確定CA已經爲這種情況計劃了一些事情?

但我不知道我能做些什麼?

謝謝你的幫助。

+0

它可能會使用一些其他資源(如視圖)而不是動畫。你的觀點是否被從他們的父母中刪除? (' - [UIView removeFromSuperview]') – nielsbot

回答

0

你試過設置-[CABasicAnimation removedOnCompletion]

它看起來像它的默認值是YES,所以我不認爲這是你的問題,但它是值得研究的。


您是否嘗試過使用配置文件來查看是什麼放緩了一切?

+0

是啊所有我的動畫設置爲removedOnCompletion = YES – user2206906

+0

嗯,我不知道什麼是配置文件 – user2206906

+0

確定CMD +我試圖... – user2206906

0

從代碼段您添加分不清什麼是你與你的觀點做什麼,但你一定要刪除它們形成了父視圖,否則他們將不會被釋放。

所以我建議你應該在開始循環之前嘗試刪除視圖,並且爲了讓你有一個很酷的動畫,只有在沒有動畫時才應該刪除一個視圖,爲此你必須添加一個視圖密鑰字符串使用動畫當前的方法addAnimation:balanceAnimation forKey:nil而不是將其設置爲nil,並檢查視圖對animationKeys層如果數組爲空或零,則動畫完成,如果不是還動畫。