CATransition在背景中出现白色闪光?

| 我正在尝试从左侧而不是右侧制作一个pushViewController幻灯片,如下所示:
Page14Controller * controller = [[Page14Controller alloc] initWithNibName:@\"Page14Controller\" bundle:nil];

CATransition* transition = [CATransition animation];
transition.duration = 0.3;
transition.type = kCATransitionPush;
//                transition.type = kCATransitionMoveIn; 
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
//kCATransitionMoveIn; //, kCATransitionPush, kCATransitionReveal, kCATransitionFade
transition.subtype = kCATransitionFromLeft; 
//kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom
[self.navigationController.view.layer addAnimation:transition forKey:nil];

[self.navigationController pushViewController:controller animated:NO];
当我这样做时,当前的控制器会淡化为白色,看起来很糟糕。为什么会这样?我尝试将当前视图的Alpha背景设置为0。     
已邀请:
        我弄清楚了是什么导致了白色闪烁:这是主窗口的背景。将此设置为alpha = 0有助于增强白色效果。看来,kCATransitionPush实际上会使从屏幕上推出的视图褪色,并且显然,如果在其下方的是绿色,则它将褪色为绿色。如果它也不会褪色,那就太好了,但这是一个不同的问题。     
        我会避免过多地干扰UIViewController的视图。 实现所需目标的更简单方法是:
UINavigationController * nc = self.navigationController;
NSArray * viewControllers = ;
NSMutableArray * newControllers = [NSMutableArray arrayWithArray:[nc viewControllers]];
[newControllers insertObject:controller atIndex:newControllers.count-1];
nc.viewControllers = newControllers;
[nc popViewControllerAnimated:YES];
注意,它用新的控制器代替了顶视图控制器,而不仅仅是推动它。这可能不是您想要的(但是,如果您使用它来模拟页面切换,则可能不希望永久推入更多的控制器,直到内存用完)。     

要回复问题请先登录注册