Я использую следующий код для переключения между представлениями с помощью CATransition.
CATransition *applicationLoadViewIn = [CATransition animation];
[applicationLoadViewIn setDuration:20];
[applicationLoadViewIn setType:kCATransitionPush];
[applicationLoadViewIn setSubtype:kCATransitionFromTop];
[applicationLoadViewIn setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
ViewToSwitchTo *myviewcontroller = [[ViewToSwitchTo alloc] init];
[self.view.layer addAnimation:applicationLoadViewIn forKey:kCATransitionPush];
[self.view addSubview:myviewcontroller.view];
Он работает в основном так, как я хочу.Он отталкивается от вершины, как и должно быть, однако почему-то действует странно.Во-первых, представление, на которое я переключаюсь, начинает поступать снизу, как и должно, но по какой-то причине представление, на которое я переключаюсь ОТ, появляется поверх него с низкой непрозрачностью, поэтому вы видите их обоих.Однако вы также видите входящий вид, смещенный, возможно, на 100 пикселей вверх, поверх него и другого вида, снова с низкой непрозрачностью.Непосредственно перед серединой перехода все работает нормально, вы видите только входящее представление и выходящее, делающее то, что они должны делать.Но немного позже, чем на полпути, вид, на который я переключаюсь, появляется в своем конечном назначении, под видом, с которого я переключаюсь, и вид, с которого я переключаюсь, уменьшен в непрозрачности.здесь