推动没有阴影和停电的动画

我有一个简单的基于iOS NavigationController的应用程序。 两个UICollectionViews ,一个接一个。 如果单击“第一个集合”上的元素,则将打开“第二个集合” 。 非常简单。

重要的提示:

“两个UICollectionViews都有透明背景。使用了navigationController一般背景颜色。 UINavigationControllerinheritance类)

问题:如果理解正确, NavigationController push方法根据算法工作:

  1. 推送视图已创建。
  2. 推视图上创建透明灰色叠加
  3. NavigationController使用标准动画推送视图。 (仍然有灰色覆盖)
  4. 灰色叠加消失。

(如果推视图具有透明背景,则可以看到灰色垂直线

截图

下一步:我试图通过重写push方法来解决这个问题。 这是我得到的:

 - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { CATransition *transition = [CATransition animation]; transition.duration = 0.45; transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; transition.type = kCATransitionPush; transition.subtype = kCATransitionFromRight; transition.fillMode = kCAFillModeForwards; transition.delegate = self; [self.view.layer addAnimation:transition forKey:nil]; [super pushViewController:viewController animated:animated]; } 

这种方式创建了自己的推送动画,但是使用了另一种标准动画,我无法删除。 (在显示和隐藏视图时停电)

Screenshots_1_and_2

问题: “如何推送ViewController,而不会出现淡入淡出,停电和其他动画filter?”

主题名称的解决方案(在stackoverflow.com上

  • iOS 7 UINavigationController推动动画阴影
  • iOS 7在导航的自定义动画中显示黑色背景

不要工作。

不要覆盖push方法。 iOS7允许您为自定义过渡提供动画控制器。 有关详细信息,请参见此处