個別に動作する 2 つのアニメーションがあるとしますが、それらを同時に動作させたいとします。
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 ****** //
}
}
上記の 2 つの関数は、どちらも CGAffineTransform を使用するアニメーションのものです。同じビューで同時に正確に実行したいとしましょう。私は、結果を同時にスライドと成長のビューにしたいと考えています。
1.) 私の最初の試みは、1 つのアニメーションを呼び出し、すぐに次のアニメーションを呼び出すことでした。しかし、それは失敗しました。基本的には最初のアニメーションからアニメーションを開始しましたが、次のアニメーションに移ると最初のアニメーションを停止しました。その結果、2 番目のアニメーションのみがアニメーション化され、最初のアニメーションは完全にスキップされました。一度に 1 つのアニメーションしか実行できないかのようです。
2.) 私の 2 番目の試みは、それぞれのアニメーションを独自のスレッド内で呼び出すことでした...これにより、同時にアニメーション化するという目標が達成されましたが、これを行うには本当にマルチスレッドが必要ですか? もっと良い方法があるはず...
PS: CGAffineTransform には、CAKeyFrameAnimation に CAAnimationGroup があるように、ある種のグループ アニメーションがありますか?
前もって感謝します。