如何使用预先存在的动画为视图设置动画?

Posted

技术标签:

【中文标题】如何使用预先存在的动画为视图设置动画?【英文标题】:How to animate the view with pre-existing animation? 【发布时间】:2017-09-29 04:32:33 【问题描述】:

我想用 UIView 的预先存在的动画为视图制作动画。 我正在使用此代码为 UIView 设置动画 -

CATransition *transition = [[CATransition alloc] init];
        transition.duration = 0.1;
        transition.type = kCATransitionPush;
        transition.subtype = kCATransitionFromLeft;
        [viewToAnimate.layer addAnimation:transition forKey:kCATransition];

我想为其他视图设置动画,以及这个动画。

【问题讨论】:

您可以使用 CAAnimationGroup 链接多个动画,您尝试过吗? 【参考方案1】:

您需要做的是链接您的动画。这是来自Apple 的示例。

let fadeOut = CABasicAnimation(keyPath: "opacity")
fadeOut.fromValue = 1
fadeOut.toValue = 0
fadeOut.duration = 1

let expandScale = CABasicAnimation()
expandScale.keyPath = "transform"
expandScale.valueFunction = CAValueFunction(name: kCAValueFunctionScale)
expandScale.fromValue = [1, 1, 1]
expandScale.toValue = [3, 3, 3]

let fadeAndScale = CAAnimationGroup()
fadeAndScale.animations = [fadeOut, expandScale]
fadeAndScale.duration = 1

【讨论】:

【参考方案2】:

您可以使用以下基本 ios 动画: UIView .animate(withDuration: TimeInterval) 代码

在代码段中,您可以编写更改不同视图的 x 位置。每当您单击按钮时,相应视图的 x 坐标将动画为 0。

【讨论】:

【参考方案3】:
Try this

func animateTransition(transitionContext: UIViewControllerContextTransitioning) 

    let fromViewController = transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey)!
    let toViewController = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey)!
    let finalFrameForVC = transitionContext.finalFrameForViewController(toViewController)
    let containerView = transitionContext.containerView()
    let bounds = UIScreen.mainScreen().bounds
    toViewController.view.frame = CGRectOffset(finalFrameForVC, 0, bounds.size.height)
    containerView.addSubview(toViewController.view)

    UIView.animateWithDuration(transitionDuration(transitionContext), delay: 0.0, usingSpringWithDamping: 0.5, initialSpringVelocity: 0.0, options: .CurveLinear, animations: 
        fromViewController.view.alpha = 0.5
        toViewController.view.frame = finalFrameForVC
        , completion: 
            finished in
            transitionContext.completeTransition(true)
            fromViewController.view.alpha = 1.0
    )

【讨论】:

以上是关于如何使用预先存在的动画为视图设置动画?的主要内容,如果未能解决你的问题,请参考以下文章

动画结束时如何隐藏视图?

如何使用 IBAnimatable 库重复为 ui 视图设置动画[关闭]

如何使用自动布局在 UIScrollView 中为视图高度设置动画?

使用所需的动画和方向为特定视图设置动画

如何在 iOS 的集合视图中为内容偏移设置动画?

如何使用动画设置 Android 视图的透明度?