2012-04-05 2 views
1

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

- (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]; 
       } 
    ]; 
} 

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

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

EDIT:

- (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]; 
        } 
    ]; 

} 

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

+0

все просто! ... http://stackoverflow.com/a/25482006/294884 – Fattie

ответ

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); 
       } 
    ]; 
} 

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

+0

Благодарим вас за ответ. Конечно, вы были правы, новый - dst. Как-то ничего не изменилось, и во время анимации dst вид не появляется. Также я не понял, почему presentModalViewController здесь не так. [link] (http://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomSegues/CreatingCustomSegues.html) Я взял его отсюда. – Alexandr

+0

Вы правы, sry я не так много в раскадровки. Наверх мой ответ. Надеюсь, это поможет. это мой последний шанс выглядеть серьезным. ;) – yinkou

+0

Еще раз спасибо за помощь. То, что я нашел, пытается запустить код ur сейчас: анимация происходит на разных представлениях. Поэтому, если я использую код ur и меняю вид до завершения анимации, я увижу только анимацию dst view. Любые идеи, как я могу заставить их одновременно анимировать без каких-либо грязных патчей, таких как один большой супер-просмотр или какой-то другой неприятный код? Сделать это ясно. Если я использую presentModalViewController до завершения, я вижу только анимацию просмотра src. Если я использую его, прежде чем я увижу только анимацию второго просмотра. И я понятия не имею, как их объединить – Alexandr

 Смежные вопросы

  • Нет связанных вопросов^_^