我想做的是使用 CATransitions 从左侧插入自定义动画。在我的正常代码中,我想使用 0.3
的持续时间,但在下面的示例中,我使用 6.0
只是为了在转换过程中看到实际问题。
很明显,在转换到新 View 时会发生淡入淡出。进入的新 View 从其背景颜色淡化为实际 View ,而滑出屏幕的 View 从实际 View 淡化为其背景颜色。在执行推送动画过渡时,它会产生一些奇怪的外观。
下面是我用于转换的代码。 settingsController
是我要为其设置动画的 Controller 。
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)
如前所述,实际的滑动动画效果如我所愿,但是发生的这种淡入淡出只会让它看起来不正确。我一直在搜索 google 和 stackoverflow 并且没有看到发布的解决方案,所以我想知道是否有人知道如何摆脱这种淡化,或者即使有解决方案可以“模拟”这种行为所以用户体验如我所愿。
我试过使两个 View 的背景颜色相同,但看起来仍然不对。
最佳答案
使用滑动 CATransition 的通常方法是为过渡 View /层提供一个剪裁到边界的超 View (或一个遮蔽边界的超层)。这样,滑动 View /层在父 View 的边界之外是不可见的,我们也看不到淡入淡出。
关于ios - 无论如何要在两个 View 之间使用 CATransition 时删除淡入淡出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35027235/