推动没有阴影和停电的动画
我有一个简单的基于iOS NavigationController
的应用程序。 两个UICollectionViews
,一个接一个。 如果单击“第一个集合”上的元素,则将打开“第二个集合” 。 非常简单。
重要的提示:
“两个UICollectionViews
都有透明背景。使用了navigationController
一般背景颜色。 ( UINavigationController
inheritance类) ”
问题:如果理解正确, NavigationController
push方法根据算法工作:
- 推送视图已创建。
- 在推视图上创建透明灰色叠加 。
- NavigationController使用标准动画推送视图。 (仍然有灰色覆盖)
- 灰色叠加消失。
(如果推视图具有透明背景,则可以看到灰色垂直线 )
截图
下一步:我试图通过重写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允许您为自定义过渡提供动画控制器。 有关详细信息,请参见此处