Вопрос по iphone, ios – Заменить один вид другим с помощью собственной анимации перехода?

1

Я пытаюсь реализовать SUBJ, но не могу сделать так, чтобы в моей анимации отображался переход к месту назначения. Я хочу сделать анимацию для изменения вида, где новый переход заменит старый. В настоящее время мой метод перформанса выглядит следующим образом:

<code>- (void) perform {

UIViewController *src = (UIViewController *) self.sourceViewController;
UIViewController *dst = (UIViewController *) self.destinationViewController;

[UIView animateWithDuration:2.0
                 animations:^{

                 //tried a lot of staff to make dst view to fall from top at the same time as current view falling to bottom but failed. 

                 src.view.transform=CGAffineTransformMakeTranslation(0, 480);
                 }
                 completion:^(BOOL finished){ 
                     [[self sourceViewController] presentModalViewController:[self destinationViewController] animated:NO];
                 }
    ];
}
</code>

Любые идеи, как я могу добавить в мой блок анимации новый вид, появляющийся сверху?

Большое спасибо!

РЕДАКТИРОВАТЬ:

<code>- (void) perform {

    UIViewController *src = (UIViewController *) self.sourceViewController;
    UIViewController *dst = (UIViewController *) self.destinationViewController;

    src.view.transform = CGAffineTransformMakeTranslation(0, 0);
    dst.view.transform = CGAffineTransformMakeTranslation(0, -480);

    [UIView animateWithDuration:2.0
                 animations:^{
                         [src.view addSubview:dst.view];
                         src.view.transform = CGAffineTransformMakeTranslation(0, 460);

                     }
                     completion:^(BOOL finished){ 
                         [src presentModalViewController:dst animated:NO];
                     }
     ];

}
</code>

Вот как я это сделал в конце.

это легко! ...stackoverflow.com/a/25482006/294884 Fattie

Ваш Ответ

1   ответ
4

что вы подразумеваете под новым и старым, поэтому я предполагаю, что new = dst и old = src.

- (void) perform {

   UIViewController *src = (UIViewController *) self.sourceViewController;
   UIViewController *dst = (UIViewController *) self.destinationViewController;

   src.view.transform = CGAffineTransformMakeTranslation(0, 0);
   dst.view.transform = CGAffineTransformMakeTranslation(0, -480);

   [UIView animateWithDuration:2.0
                 animations:^{
                     [src presentModalViewController:dst animated:NO];
                     src.view.transform = CGAffineTransformMakeTranslation(0, 480);
                     dst.view.transform = CGAffineTransformMakeTranslation(0, 0);
                 }
   ];
}

Это должно сделать это.

до после завершения = до завершения анимации * Alexandr
Вы правы, простите, я не слишком увлекаюсь раскадровкой. Повысил мой ответ. Надеюсь, это поможет. это мой последний шанс выглядеть серьезно. ;)
Спасибо за ваш ответ. Уверен, что ты был прав, новый - это ДСТ. Каким-то образом ничего не изменилось, и во время анимации представление dst не появляется. Также я не понял, почему presentModalViewController здесь не так.link Я взял это отсюда. Alexandr
Еще раз спасибо за помощь мне. То, что я сейчас нашел, попробовав ваш код: анимация происходит в разных видах. Так что, если я использую ваш код и меняю вид до завершения анимации, я буду видеть только анимацию вида dst. Любые идеи, как я могу сделать их оба анимированными одновременно без каких-либо грязных патчей, таких как один большой супер-просмотр или другой неприятный код? Чтобы сделать это ясно. Если я использую presentModalViewController до и после завершения, я вижу только анимацию src view. Если я использую его раньше, я вижу только второй вид анимации. И я понятия не имею, как их объединить Alexandr

Похожие вопросы