1

假设我有两个单独工作的动画,但我希望它们同时工作。

    public static void SlideAnimation( string name, UIView view, float xOffset, float yOffset, float duration )
    {           
        if ( view != null )
        {
            // ****** Begin Animation ****** //
            UIView.BeginAnimations(name + " SlideAnimation");
            UIView.SetAnimationDuration(duration);
            UIView.SetAnimationDelegate (view);
            CGAffineTransform move = CGAffineTransform.MakeTranslation(xOffset, yOffset);
            CGAffineTransform transforms = move;
            view.Transform = transforms;
            UIView.CommitAnimations();  
            // ****** End Animation ****** //
        }
    }       

    public static void GrowAnimation( string name, UIView view, float xScale, float yScale, float duration )
    {           
        if ( view != null )
        {
            // ****** Begin Animation ****** //
            UIView.BeginAnimations(name + " GrowAnimation");
            UIView.SetAnimationDuration(duration);
            UIView.SetAnimationDelegate (view);
            CGAffineTransform scale = CGAffineTransform.MakeScale(xScale, yScale);
            CGAffineTransform transforms = scale;
            view.Transform = transforms;
            UIView.CommitAnimations();  
            // ****** End Animation ****** //
        }
    }       

上面的两个函数都是使用 CGAffineTransform 的动画假设我想在同一时间在同一个视图上执行它们。我希望结果是同时滑动和增长的视图。

1.) 我的第一次尝试是调用一个动画,然后立即调用下一个。但那失败了。基本上,它开始为第一个动画制作动画,但是一旦移动到下一个动画,它就停止了第一个动画。结果只是动画第二个动画而完全跳过了第一个动画......几乎就像它一次只能做一个动画一样。

2.)我的第二次尝试是在它自己独特的线程中调用每个动画......这实现了让它们同时动画的目标,但我真的需要多线程来做到这一点吗?肯定有更好的办法...

PS:CGAffineTransform 是否有某种组动画,就像 CAKeyFrameAnimation 有 CAAnimationGroup 一样?

提前致谢。

4

1 回答 1

3

只需创建一个转换并添加第二个:

CGAffineTransform composite = CGAffineTransform.MakeTranslation(xOffset, yOffset);
composite.Scale(xScale, yScale)
view.Transform = composite;
于 2012-12-07T17:34:42.217 回答