我正在尝试为 imageview 上的两个图像之间的闪烁设置动画,以将用户的注意力吸引到一个指示器上以注意到变化。我希望图像在保留在新图像上之前只闪烁一到两次。事件的时间线如下所示:
- 旧图像已设置,正在等待特定事件发生。
- 事件发生并开始闪烁动画。新图像显示 0.25 秒。
- 旧图像显示 0.25 秒。
- 新图像显示 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];
}
}
然而,这并没有产生预期的结果。使用上面的代码,视图只是简单地变成了新的图像,没有做更多的事情。
任何帮助将不胜感激。提前致谢!