2012-04-18 55 views
1

我有一個要求動畫圖像。我有大量的圖像,這需要作爲視頻播放。在玩遊戲的時候,有時我需要更改一些圖片,因爲它們會在服務器上更新。所以玩耍應該會自動更新這個新的圖像。動態改變動畫中的圖像IOS

我試過使用UIImageView。我們無法控制動畫。 然後我嘗試CAKeyframeAnimation提供圖像數組值屬性。我可以播放和暫停動畫。但是在這裏我也不能在播放時動態改變圖像。

任何人都可以幫助我解決這個問題。

感謝 MIA

回答

0

上的UIImageView動畫系統是非常有限的。我建議你用say 2圖像視圖製作你自己的實現。

你會比改變一個imageview的形象和淡入和淡出使用UIView animateWithDuration

我已經寫了你的方法。請注意:我沒有測試過它。

它假定你有你的幀稱爲「框架」數組中,並有放置彼此稱爲「imgv1」和「imgv2」

-(void)performAnimationOfFrameAtIndex:(NSNumber*)indexNum 
{   
    int index = [indexNum intValue]; 
    if(index >= frames.count) 
    { 
     return; 
    } 
    UIImage *img = [frames objectAtIndex:index]; 

    UIImageView *imgIn; 
    UIImageView *imgOut; 
    if(index % 2 == 0) 
    { 
     imgIn = imgv1; 
     imgOut = imgv2; 
    } 
    else { 
     imgIn = imgv2; 
     imgOut = imgv1; 
    } 
    imgIn.image = img; 
    [self.view sendSubviewToBack:imgIn]; 

    [UIView animateWithDuration:0.1 animations:^{ 
     imgIn.alpha = 1; 
     imgOut.alpha = 0; 
    } completion:^(BOOL finished) { 
     [self performSelectorOnMainThread:@selector(performAnimationOfFrameAtIndex:) withObject:[NSNumber numberWithInt:index+1] waitUntilDone:NO]; 
    }]; 

} 
+0

你的意思是如果我有100幀..我需要使用3個圖像視圖,並將第3個位置,然後替換這些圖像視圖中的下3個圖像等。你能否詳細說明一下? – mia 2012-04-19 05:22:20

+0

看到我上面編輯的答案... – EsbenB 2012-04-19 12:10:50

0

使用兩UIImageViews和交換他們的前兩名UIIMageView

如果您對「動畫」UIView的引用較弱,請務必檢查動畫是否在完成塊中完成。否則,當您導航到另一個視圖時,您可能會遇到性能問題,對動畫方法的遞歸調用將繼續!

- (void)animateImagesAtIndex:(NSNumber *)imageIdx { 
    // Do something here 
    [UIView animateWithDuration:1 animations:^{ 
     // Do swap 
    } 
    completion:^(BOOL finished) { 
     if (finished) { 
      [self animateImagesAtIndex:imageIdx]; 
     } 
    }]; 
} 
0

UIImageView支持一系列圖像的動畫。您只需使用圖像數組設置屬性animationImages,然後調用方法startAnimating和stopAnimating。