UIView bloc d'animation non les sous-vues de vue de l'animation
-
27-09-2019 - |
Question
Je suis incapable de réaliser une animation avec le code suivant:
if (self.segmentControl.selectedSegmentIndex == 0) {
[UIView transitionFromView:tableView
toView:mapView
duration:1.0
options:UIViewAnimationTransitionFlipFromLeft
completion:nil
];
}
if (self.segmentControl.selectedSegmentIndex == 1) {
[UIView transitionFromView:mapView
toView:tableView
duration:1.0
options:UIViewAnimationTransitionFlipFromRight
completion:nil
];
}
Les vues échangez en fait, mais juste sans aucune animation. Il est tout à fait étrange. J'ai aussi essayé de mapView
d'échange et tableView
avec self.view.subviews
comme si (objectAtIndex:0
est un toolBar
):
if (self.segmentControl.selectedSegmentIndex == 0) {
[UIView transitionFromView:[self.view.subviews objectAtIndex:1]
toView:[self.view.subviews objectAtIndex:2]
duration:1.0
options:UIViewAnimationTransitionFlipFromLeft
completion:nil
];
}
if (self.segmentControl.selectedSegmentIndex == 1) {
[UIView transitionFromView:[self.view.subviews objectAtIndex:2]
toView:[self.view.subviews objectAtIndex:1]
duration:1.0
options:UIViewAnimationTransitionFlipFromRight
completion:nil
];
}
La solution
Vous utilisez les mauvaises options. Avec cette méthode, vous devez utiliser les constantes UIViewAnimationOptionTransitionFlipFromLeft
et …Right
à la place.
Les vieilles constantes UIViewAnimationTransitionFlipFromLeft
et …Right
ne doivent être utilisés pour la méthode de la non-bloc +setAnimationTransition:…
. Ces constantes ont des valeurs 1 et 2 respectivement, tandis que les I mentionnés ci-dessus ont des valeurs de 1 << 20 et 2 << 20, qui sont totalement différents.