ios - 无论如何要在两个 View 之间使用 CATransition 时删除淡入淡出?

标签 ios swift animation uinavigationcontroller

我想做的是使用 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/

相关文章:

android - 将 Android NDK 用于现有 iOS 应用程序

ios - 如何将 opengl 场景叠加到 ios 相机源上?

ios - 文本字段在输入时会截断第一个表情符号

swift - 读取 sender.tag 时将 UIImageView 与选择器@objc C 函数一起使用时 Swift 出错

ios - Swift:如何将字典数组添加到数组?

swift - 电报应用程序如何在向后滑动时制作流畅的动画?

android - 有没有办法为应用程序( native 或混合)创建指纹扫描仪?

ios - 当 View 重新进入前景时恢复绘制 CAShapeLayer?

css - 另一个 div 后面的绝对图像动画 - Angular 5 动画

angular - 如何在 false *ngIf 删除元素之前捕获它?