gpt4 book ai didi

c# - Monotouch CGAffineTransform,在同一 View 上同时为多个仿射变换设置动画

转载 作者:行者123 更新时间:2023-12-01 19:15:28 30 4
gpt4 key购买 nike

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

    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 的动画假设我想在同一个 View 上同时执行它们。我希望结果是同时滑动和增长的 View 。

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

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

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

提前致谢。

最佳答案

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

CGAffineTransform composite = CGAffineTransform.MakeTranslation(xOffset, yOffset);
composite.Scale(xScale, yScale)
view.Transform = composite;

关于c# - Monotouch CGAffineTransform,在同一 View 上同时为多个仿射变换设置动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13766841/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com