2回動かそうとしてUILabel
いますが、奇妙な動作をしています。これが私の最初のアニメーションです:
- (IBAction)doAnimation:(id)sender
{
CGRect labelFrame = self.label.frame;
CGRect newFrame = CGRectMake((random() / (float)RAND_MAX) * self.view.frame.size.width,
(random() / (float)RAND_MAX) * self.view.frame.size.height,
labelFrame.size.width,
labelFrame.size.height);
[UIView animateWithDuration:2
delay:0
options:0
animations:^{
self.label.frame = newFrame;
}
completion:NULL];
}
これは完全に機能します。ラベルは移動中にフェードインします。
次に、このコードを最後に追加して、2 番目の遅延アニメーションを追加しましたdoAnimation:
CGRect newFrame2 = CGRectMake((random() / (float)RAND_MAX) * self.view.frame.size.width,
(random() / (float)RAND_MAX) * self.view.frame.size.height,
labelFrame.size.width,
labelFrame.size.height);
[UIView animateWithDuration:2
delay:3
options:0
animations:^{
self.label.frame = newFrame2;
}
completion:NULL];
この場合、私は別の振る舞いをします。ラベルは最初のアニメーションの最後にジャンプし、遅延が終了するのを待ってから、2 番目の動きをアニメーション化します。
好奇心から、アニメーション 1 の 2 つのプロパティをアニメーション化してみました。
animations:^{
self.label.frame = newFrame;
self.label.alpha = 1.0f;
}
アルファは正しくアニメーション化されますが、フレームの変更は正しくありません。
アニメーション 2 にアルファの変更を追加すると、アニメーション 1 ではアルファがアニメーション化されません (代わりに、最後にジャンプするだけです)。
遅延アニメーションを使用して、同様のプロパティでアニメーション シーケンスを作成することは可能ですか? ユーザーの入力に応じて、これを任意の数のアニメーションに拡張する必要があります。