Xcode настраиваемая анимация

У меня проблема с анимацией перехода между двумя контроллерами раскадровки. У меня есть проект singleView с двумя контроллерами представления в раскадровке.

Теперь я хочу сделать собственную анимацию перехода:

  • мой текущий контроллер вида должен исчезнуть слева
  • новый контроллер вида должен исходить справа

У меня уже есть UIStoryboardSegue учебный класс.

Но что я должен написать в -(void)perform{} метод??

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

Джонас.

1 ответ

Решение

Для этого простого примера вы можете попробовать что-то вроде этого:

- (void)perform {
    UIViewController* source = (UIViewController *)self.sourceViewController;
    UIViewController* destination = (UIViewController *)self.destinationViewController;

    CGRect sourceFrame = source.view.frame;
    sourceFrame.origin.x = -sourceFrame.size.width;

    CGRect destFrame = destination.view.frame;
    destFrame.origin.x = destination.view.frame.size.width;
    destination.view.frame = destFrame;

    destFrame.origin.x = 0;

    [source.view.superview addSubview:destination.view];

    [UIView animateWithDuration:1.0
                     animations:^{
                         source.view.frame = sourceFrame;
                         destination.view.frame = destFrame;
                     }
                     completion:^(BOOL finished) {
                         UIWindow *window = source.view.window;
                         [window setRootViewController:destination];
                     }];
}
Другие вопросы по тегам