Проблема с использованием CATransitions для переключения представлений - PullRequest
1 голос
/ 22 декабря 2010

Итак, я пытался использовать этот код для переключения между представлениями:

CATransition *applicationLoadViewIn = [CATransition animation];

    [applicationLoadViewIn setDuration:1];

    [applicationLoadViewIn setType:kCATransitionReveal];

    [applicationLoadViewIn setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];

    MyViewControllerClass *theControllerIAmSwitchingTo = [[MyViewControllerClass alloc] init];

    [[theControllerIAmSwitchingTo.view layer] addAnimation:applicationLoadViewIn forKey:kCATransitionReveal];

Но код не работает.Там нет ошибок, и код работает нормально, но он ничего не делает.Что я тут не так делаю?

Ответы [ 2 ]

1 голос
/ 22 декабря 2010

Просто сделайте это следующим образом:

 CATransition *applicationLoadViewIn = [CATransition animation];

    [applicationLoadViewIn setDuration:1];

    [applicationLoadViewIn setType:kCATransitionReveal];

    [applicationLoadViewIn setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];

    MyViewControllerClass *theControllerIAmSwitchingTo = [[MyViewControllerClass alloc] init];

    [[theControllerIAmSwitchingTo.view layer] addAnimation:applicationLoadViewIn forKey:kCATransitionReveal];

    [self.navigationController pushViewController:theControllerIAmSwitchingTo animated:NO];

Я заметил, что проблема в том, что вы не добавляете свое представление в свой стек навигации, и поэтому ваше представление не загружается и вы не видите анимацию.

1 голос
/ 22 декабря 2010

Вам необходимо добавить анимацию в слой родительского представления, а затем добавить представление как подпредставление родительского представления.

Так что вместо

[[theControllerIAmSwitchingTo.view layer] addAnimation:applicationLoadViewIn forKey:kCATransitionReveal];

Вам нужно использовать

[parentView.layer addAnimation:animation forKey:kCATransitionReveal];
[parentView addSubview:theControllerIAmSwitchingTo.view];
...