Как отменить блочную анимацию UIView?

Я перерыл множество материалов SO и справочников Apple, но так и не смог справиться со своей проблемой.

Что у меня есть:

  1. экран с 2 UIImageViews и связанными с ними 2 UIButtons
  2. 2 вида анимации:
    2.1. сначала увеличивается, затем уменьшается каждое из изображений, одно за другим, только один раз в viewDidLoad 2.2. во-вторых, при нажатии кнопки (это пользовательская кнопка, скрытая «внутри» каждого UIImageView) она запускает анимацию соответствующего UIImageView - только одного, а не обоих - (также масштабируется вверх, затем вниз).
  3. Когда я пишу для iOS4+, мне говорят использовать блочную анимацию!

Что мне нужно:

Как отменить бегущую анимацию? Мне удалось отменить все, кроме последнего... :/ Вот мой фрагмент кода:

[UIImageView animateWithDuration:2.0 
                               delay:0.1 
                             options:UIViewAnimationOptionAllowUserInteraction 
                          animations:^{
        isAnimating = YES;
        self.bigLetter.transform = CGAffineTransformScale(self.bigLetter.transform, 2.0, 2.0);
    } completion:^(BOOL finished){
        if(! finished) return;
        [UIImageView animateWithDuration:2.0 
                                   delay:0.0 
                                 options:UIViewAnimationOptionAllowUserInteraction 
                              animations:^{
            self.bigLetter.transform = CGAffineTransformScale(self.bigLetter.transform, 0.5, 0.5);
        } completion:^(BOOL finished){
            if(! finished) return;
            [UIImageView animateWithDuration:2.0 
                                       delay:0.0 
                                     options:UIViewAnimationOptionAllowUserInteraction 
                                  animations:^{
                self.smallLetter.transform = CGAffineTransformScale(self.smallLetter.transform, 2.0, 2.0);
            } completion:^(BOOL finished){
                if(! finished) return;
                [UIImageView animateWithDuration:2.0 
                                           delay:0.0 
                                         options:UIViewAnimationOptionAllowUserInteraction 
                                      animations:^{
                    self.smallLetter.transform = CGAffineTransformScale(self.smallLetter.transform, 0.5, 0.5);
                }
                                      completion:^(BOOL finished){
                                          if (!finished) return;
                                          //block letter buttons
                                          [self.bigLetterButton setUserInteractionEnabled:YES];
                                          [self.smallLetterButton setUserInteractionEnabled:YES];
                                          //NSLog(@"vieDidLoad animations finished");
                                      }];
            }];
        }];
    }];

Почему-то UIImageView smallLetter не работает должным образом, потому что при нажатии (через кнопку) bigLetter корректно отменяет анимацию... заранее спасибо :)

EDIT: Я использовал это решение, но все еще имею проблему с уменьшением масштаба smallLetter UIImageView - вообще не отменяю... решение

EDIT2: Я добавил это в начало следующего/предыдущего методов:

- (void)stopAnimation:(UIImageView*)source {
    [UIView animateWithDuration:0.01
                          delay:0.0 
                        options:(UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionAllowUserInteraction)
                     animations:^ {
                         source.transform = CGAffineTransformIdentity;
                     }
                     completion:NULL
     ];
}

проблема остается...:/ не знаю, как прервать последнюю анимацию букв в цепочке анимации

74
задан Community 23 May 2017 в 12:26
поделиться