Я внедряю несколько простых анимаций в приложение для своих карт.
Пока все отлично работает, но мне нужно исправить еще одну деталь, прежде чем я смогу сказать, что все готово.
Сценарий довольно прост:
Три карты должны покинуть экран с анимацией, прежде чем переход модально отобразит новый экран.
До сих пор анимация выполняется и загружается новый вид, но деталь, которую я не смог проработать, - это «подождите, пока анимация завершится, прежде чем отображать новый вид».
Я делаю это так:
1) Установите анимацию выхода с помощью этого метода
- (void)performExitAnimationWithCompletionBlock:(void (^)(BOOL))block
{
[UIView animateWithDuration:0.1f
delay:0.0f
options:UIViewAnimationOptionCurveEaseOut
animations:^
{
self.optionOneFront.center = self.optionOneBack.center = self.optionTwoFront.center;
self.optionOneFront.transform = self.optionOneBack.transform = self.optionTwoFront.transform;
self.optionThreeFront.center = self.optionThreeBack.center = self.optionTwoFront.center;
self.optionThreeFront.transform = self.optionThreeBack.transform = self.optionTwoFront.transform;
}
completion:^(BOOL finished)
{
CGPoint point = CGPointMake(self.optionTwoFront.center.x, self.view.frame.size.height * -2.0f);
[UIView animateWithDuration:1.0f
delay:0.0f
options:UIViewAnimationOptionCurveEaseOut
animations:^
{
self.optionOneFront.center = point;
self.optionOneBack.center = point;
self.optionTwoFront.center = point;
self.optionTwoBack.center = point;
self.optionThreeFront.center = point;
self.optionThreeBack.center = point;
}
completion:block];
}];
}
2) Попробуйте обернуть код перехода в анимацию перед представлением VC «AddOptions».
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
[self performExitAnimationWithCompletionBlock:^(BOOL finished)
{
// Executes the following "if" statement if the user wants to add new options
if ([segue.identifier isEqualToString:@"AddOptions"])
{
UINavigationController *navigationController = segue.destinationViewController;
OptionsViewController *controller = (OptionsViewController *)navigationController.topViewController;
controller.delegate = self;
}
}];
}
Как я уже говорил, все работает, но модальные окна появляются до окончания анимации.
Есть идеи, что мне не хватает?