UIView Animation Block nicht Animation Ansicht des Subviews
-
27-09-2019 - |
Frage
Ich bin nicht in der Lage jede Animation mit dem folgenden Code zu erreichen:
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
];
}
Die Ansichten tauschen tatsächlich, aber nur ohne Animation. Es ist ziemlich merkwürdig. Ich habe auch zu tauschen mapView
und tableView
mit self.view.subviews
versucht, wie so (objectAtIndex:0
ist ein 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
];
}
Lösung
Sie benutzen die falschen Optionen. Mit dieser Methode sollten Sie die Konstanten UIViewAnimationOptionTransitionFlipFromLeft
und …Right
statt.
Die alten Konstanten UIViewAnimationTransitionFlipFromLeft
und …Right
dürfen nur für die nicht-blockbasierten Verfahren +setAnimationTransition:…
verwendet werden. Diese Konstanten haben Werte 1 bzw. 2, während die, die ich oben erwähnt haben Werte 1 << 20 und 2 << 20, die völlig unterschiedlich sind.