2

我正在尝试为 imageview 上的两个图像之间的闪烁设置动画,以将用户的注意力吸引到一个指示器上以注意到变化。我希望图像在保留在新图像上之前只闪烁一到两次。事件的时间线如下所示:

  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];
    }
}

然而,这并没有产生预期的结果。使用上面的代码,视图只是简单地变成了新的图像,没有做更多的事情。

任何帮助将不胜感激。提前致谢!

4

2 回答 2

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];
于 2012-06-18T14:00:00.807 回答
0

为什么不直接使用 UIImageView 的内置动画呢?

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

或者你总是可以只设置突出显示的图像并切换它而不是整个图像

- (id)initWithImage:(UIImage *)image highlightedImage:(UIImage *)highlightedImage
于 2012-06-18T14:02:18.043 回答