Как изменить UIImage UIImageView после длительности (эффект мигания)
Я пытаюсь анимировать мигание между двумя изображениями на 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];
}
}
Однако это не дало ожидаемых результатов. С помощью приведенного выше кода вид просто менялся на новое изображение и больше ничего не делал.
Любая помощь будет весьма признательна. Спасибо вперед!2 ответа:
Вот поставьте эту строчку ниже
setAnimationDuration
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:yourView cache:YES];
Здесь другой тип анимации.. также вы можете использовать bellow другой способ для анимации
#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];
Почему бы просто не использовать встроенные анимации UIImageView?
Animating Images animationImages (property) highlightedAnimationImages (property) animationDuration (property) animationRepeatCount (property) – startAnimating – stopAnimating – isAnimating
Или вы всегда можете просто установить выделенное изображение и переключить его вместо всего изображения
- (id)initWithImage:(UIImage *)image highlightedImage:(UIImage *)highlightedImage