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

Evg*_*iuc 5 objective-c ios ios7

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

重要的提示:

"两者UICollectionViews都有透明背景.使用了一般背景颜色navigationController.(继承类来自UINavigationController) "

问题: 如果理解正确,NavigationController按照算法推送工作方法:

  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];
}
Run Code Online (Sandbox Code Playgroud)

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

Screenshots_1_and_2

问题: "我如何推送ViewController,没有淡入淡出,停电和其他动画过滤器?"

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

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

不要工作.

Leo*_*ica 5

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