Detenga una animación UIView con inversión automática / repetición infinita con un bloque de finalización / BOOL

Estoy configurando lo siguienteUIView animateWithDuration: Método, con la intención de establecer mianimationOn BOOL en otro lugar del programa para cancelar esa repetición de bucle infinito. Tenía la impresión de que lacompletion el bloque se llamará cada vez que finalice un ciclo de la animación, pero este no parece ser el caso.

Es elcompletion Bloqueado alguna vez llamado en una animación de repetición? Y si no, ¿hay otra manera de detener esta animación desde fuera de este método?

- (void) animateFirst: (UIButton *) button
{
    button.transform = CGAffineTransformMakeScale(1.1, 1.1);
    [UIView animateWithDuration: 0.4
                          delay: 0.0
                        options: UIViewAnimationOptionCurveEaseOut | UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat
                     animations: ^{
                         button.transform = CGAffineTransformIdentity;
                     } completion: ^(BOOL finished){
                         if (!animationOn) {
                             [UIView setAnimationRepeatCount: 0];
                         }
    }];
}

Respuestas a la pregunta(4)

Su respuesta a la pregunta