2012-06-18 41 views
2

我試圖在兩個圖像之間閃爍動畫,以便將用戶的注意力吸引到指示符以注意更改。我希望圖像在保留新圖像之前僅閃爍一次或兩次。事件的時間線如下所示:如何在持續時間(閃爍效果)後更改UIImageView的UIImage

  1. 舊圖像已設置並正在等待發生特定事件。
  2. 發生事件並開始閃爍動畫。新圖像顯示0.25秒。
  3. 舊圖像顯示0.25秒。
  4. 新圖像顯示0.25秒。動畫結束。

由於動畫時間短,我的印象是有一種方法可以在不使用NSTimer的情況下做到這一點。我目前的嘗試是低於

+(void)blinkImage:(UIImageView*)view toNewImage:(UIImage*)newImage numOfTimes:(int)numOfTimes{ 

    float waitInterval = 0.25; 
    float totalWaitTime = 0.0; 
    UIImage *oldImage = view.image; 

    view.image = newImage; 
    totalWaitTime = totalWaitTime+waitInterval; 

    for (int times = 0; times<numOfTimes; times++) { 
     [UIView beginAnimations:@"setOld" context:nil]; 
     [UIView setAnimationDelay:totalWaitTime]; 
     [UIView setAnimationDuration:waitInterval]; 
     view.image = oldImage; 
     totalWaitTime = totalWaitTime+waitInterval; 
     NSLog(@"SetOld; waitTime %f", totalWaitTime); 
     [UIView commitAnimations]; 

     [UIView beginAnimations:@"setNew" context:nil]; 
     [UIView setAnimationDelay:totalWaitTime]; 
     [UIView setAnimationDuration:waitInterval]; 
     view.image = newImage; 
     totalWaitTime = totalWaitTime+waitInterval; 
     NSLog(@"SetNew; waitTime %f", totalWaitTime); 
     [UIView commitAnimations]; 
    } 
} 

但是,這並沒有產生預期的結果。通過上面的代碼,視圖簡單地改變爲新的圖像,並且什麼都沒做。

任何幫助將不勝感激。提前致謝!

回答

1

這裏就把這一行波紋管setAnimationDuration

[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:yourView cache:YES]; 

這裏不同類型的動畫.. 也可以用波紋管的另一種方式爲動畫

#define kAnimationKey @"transitionViewAnimation" 

CATransition *animation = [CATransition animation]; 
    [animation setDelegate:self]; 
    [animation setType:kCATransitionFromBottom]; 
    [animation setDuration:1.0]; 
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName: 
            kCAMediaTimingFunctionEaseInEaseOut]]; 
    [[yourView layer] addAnimation:animation forKey:kAnimationKey]; 
+0

動畫過渡不允許我使用多個背到後面的動畫,但它確實給了我一個更優雅的解決方案。我決定只使用flipFromLeft和一個動畫來代替。感謝您的迴應! – Krejko

0

爲什麼不直接使用的UIImageView的內置動畫?

Animating Images 
    animationImages (property) 
    highlightedAnimationImages (property) 
    animationDuration (property) 
    animationRepeatCount (property) 
– startAnimating 
– stopAnimating 
– isAnimating 

或者你總是可以只設置高亮顯示的圖像和交換機,而不是整個圖像

- (id)initWithImage:(UIImage *)image highlightedImage:(UIImage *)highlightedImage