Comment arrêter et inverser une animation UIView?

J'ai animé une UIView afin qu'il se rétracte lorsque l'utilisateur appuie sur un bouton et il s'étend en arrière à sa taille d'origine lorsque l'utilisateur appuie sur le bouton de nouveau. Jusqu'à présent, tout fonctionne très bien. Le problème est que l'animation prend un peu de temps - par exemple 3 secondes. Pendant ce temps, j'ai encore envie à l'utilisateur d'être en mesure d'interagir avec l'interface. Ainsi, lorsque l'utilisateur appuie sur le bouton de nouveau alors que l'animation est toujours en cours et l'animation est censé arrêter là où il est et arrière.

Dans la Pomme Q&Que j'ai trouvé un moyen de mettre en pause toutes les animations immédiatement:

https://developer.apple.com/library/ios/#qa/qa2009/qa1673.html

Mais je ne vois pas un moyen d'inverser l'animation à partir d'ici (et d'omettre le reste de la période initiale de l'animation). Comment puis-je y arriver?

- (IBAction)toggleMeter:(id)sender {
    if (self.myView.hidden) {        
        self.myView.hidden = NO;
        [UIView animateWithDuration:3 animations:^{
            self.myView.transform = expandMatrix;
        } completion:nil];
    } else {
        [UIView animateWithDuration:3 animations:^{
            self.myView.transform = shrinkMatrix;
        } completion:^(BOOL finished) {
            self.myView.hidden = YES;
        }];
    }
}

source d'informationauteur Mischa