无论如何在两个视图之间使用CATransition时删除淡入淡出?

我想要做的是使用CATransitions从左侧推送自定义动画。 在我的正常代码中,我想使用0.3持续时间,但在下面的示例中,我正在使用6.0 ,因此我可以在转换期间看到实际问题。

转换到新视图时,显然会出现淡入淡出。 新视图从背景颜色渐变到实际视图,而从屏幕滑落的视图从实际视图渐变为背景颜色。 在进行推送动画转换时,它会产生一些奇怪的外观。

下面是我用于过渡的代码。 settingsController是我试图动画的控制器。

  let transition = CATransition() transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) transition.duration = 6.0 transition.type = kCATransitionPush transition.subtype = kCATransitionFromLeft self.navigationController?.view.layer.addAnimation(transition, forKey: nil) UIView.transitionFromView(self.view, toView: settingsViewController.view, duration: 0, options: UIViewAnimationOptions.TransitionNone, completion: nil) self.navigationController?.pushViewController(settingsViewController, animated: false) 

如上所述,实际的滑动动画可以按照我想要的方式工作,但是会出现这种淡化现象,只是让它看起来不正确。 我一直在搜索谷歌和stackoverflow并没有看到一个解决方案发布,所以我想知道是否有人知道如何摆脱这种淡化,或者即使有一个解决方案“模拟”这种行为所以用户体验看起来像我想要的那样。

我已经尝试使两个视图的背景颜色相同,但仍然看起来不正确。

使用滑动CAT转换的常用方法是为转换视图/图层提供剪切到边界的超级视图(或掩盖边界的超级图层)。 这样,滑动视图/图层在superview的边界之外是不可见的,我们永远不会看到淡入淡出。