отмените UIView animateWithDuration перед завершением
В моем проекте есть такой код:
- (void) fadeImageView {
[UIView animateWithDuration:1.0f
delay:0
options:UIViewAnimationCurveEaseInOut
animations:^{
self.imageView.alpha = 0.0f;
}
completion:^(BOOL finished) {
//make the image view un-tappable.
//if the fade was canceled, set the alpha to 1.0
}];
}
Однако есть обстоятельства, при которых я хотел бы отменить эту операцию до того, как imageview станет невидимым. Есть ли способ отменить эту анимацию в середине анимации?3 ответа:
Update: предпочитаю этот ответ https://stackoverflow.com/a/21527129/194309 от Борута Томазина
Из документов Apple: Использование этого метода не рекомендуется в iOS 4.0 и более поздних версиях. Вместо этого вы должны использовать
animateWithDuration:delay:options:animations:completion:
способ задания анимации и параметров анимации.:[UIView animateWithDuration:1.f delay:0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{ self.imageView.alpha = 0.0f; } completion:NULL];
Прежде всего, вы должны добавить UIViewAnimationOptionAllowUserInteraction в опцию like..
- (void) fadeImageView { [UIView animateWithDuration:1.0f delay:0 options:UIViewAnimationCurveEaseInOut | UIViewAnimationOptionAllowUserInteraction animations:^{ self.imageView.alpha = 0.0f; } completion:^(BOOL finished) { //make the image view un-tappable. //if the fade was canceled, set the alpha to 1.0 }]; }
А затем сделайте такой метод....
-(void)stopAnimation { [self.routeView.layer removeAllAnimations]; }
После этого, когда вы хотите удалить анимацию вызовите выше метод using .....
[self performSelectorOnMainThread:@selector(stopAnimation) withObject:nil waitUntilDone:YES];
Надеюсь, что это поможет вам
Счастливое кодирование.........!!!!!!!!!!!! :)
Правка:
Спасибо user1244109, чтобы направлять меня для этого.
Для iOS7 мы должны добавить еще один вариант
UIViewAnimationOptionBeginFromCurrentState
, например:[UIView animateWithDuration:1.0f delay:0 options:UIViewAnimationCurveEaseInOut | UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionBeginFromCurrentState animations:^{ self.imageView.alpha = 0.0f; } completion:^(BOOL finished) { //make the image view un-tappable. //if the fade was canceled, set the alpha to 1.0 }];