我想做的是使用 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,但没有看到发布的解决方案,所以我想知道是否有人知道如何摆脱这种褪色,或者即使有一种解决方案可以“模拟”这种行为,所以用户体验看起来就像我想要的那样。
我尝试使两个视图的背景颜色相同,但看起来仍然不正确。
使用滑动 CATransition 的常用方法是为过渡视图/层提供一个剪辑到边界的超级视图(或一个遮罩到边界的超级层)。这样,滑动视图/层在超级视图的边界之外是不可见的,并且我们永远不会看到淡入淡出。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)