【问题标题】:Anyway to remove fade when using CATransition between 2 views?在两个视图之间使用 CATransition 时无论如何要删除淡入淡出?
【发布时间】:2016-05-03 19:21:46
【问题描述】:

我正在尝试做的是使用 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)

如前所述,实际的滑动动画按我的意愿工作,但是会发生这种淡入淡出,使它看起来不正确。我一直在搜索 google 和 stackoverflow 并没有看到发布的解决方案,所以我想知道是否有人知道如何摆脱这种褪色,或者即使有一种解决方法可以“模拟”这种行为,所以用户体验看起来如我所愿。

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

【问题讨论】:

    标签: ios swift animation uinavigationcontroller


    【解决方案1】:

    使用滑动 CATransition 的常用方法是为过渡视图/图层提供一个剪辑到边界的超级视图(或一个屏蔽边界的超级层)。这样一来,滑动视图/图层在超级视图的边界之外是不可见的,我们永远不会看到淡入淡出。

    【讨论】:

    • 您能详细说明一下吗?我没有完全按照您的意思进行操作。我在这方面没有太多经验,主要是使用导航控制器来推送/弹出新的视图控制器,但是我现在正在尝试推送一个并从另一侧设置动画,所以这对我来说都是新的,谢谢!
    • 您不会使用 CATransition 层动画来推送视图控制器。但你没有问这个。我回答了你问的问题。如果您对在进行推送或弹出时自定义过渡动画感兴趣,请研究该动画或提出新问题。
    • 我有兴趣在将新视图控制器推入视图时自定义过渡动画。正如我在问题中提到的,我试图从屏幕的另一侧推动,与典型的 UINavigationController pushViewController 功能相反。在这一点上,你有点失去我了。
    • “我有兴趣在将新的视图控制器推入视图时自定义过渡动画” 正如我所说的,请提出一个关于如何做到这一点的新问题。它与 CATransition 无关。然而,这个问题是关于 CATransition 如何消失的,我回答了这个问题。
    • 好的,我明白了 - 我在这里添加了一个新问题 - stackoverflow.com/questions/35045055/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多