animateWithDuration: メソッドを使用して、iOS でアニメーションを作成しようとしています。
画面上で画像 (UIImageView の雲の単純な画像) を移動してから、そのアニメーションをループで実行し、画面を横切るたびに速度 (期間) を変更したいと考えています。
いくつかの方法を試しましたが、どちらも正しく動作しません。
最初に、次のように UIViewAnimationOptionRepeat を使用できます。
[UIImageView animateWithDuration:arc4random() % 10 + 1
delay:0.0
options:UIViewAnimationOptionCurveLinear | UIViewAnimationOptionRepeat
animations:^{
//moving the cloud across the screen here
}
completion:^(BOOL finished) {
NSLog(@"Done!");
}];
しかし、これは継続時間をリセットするためにarc4random()を再度呼び出すようには見えません...つまり、アニメーションがループするたびではなく、アプリが開始されるたびにのみ、雲がランダムな速度で画面を横切ります。
次に、完了ブロックを使用して、次のようにアニメーションを再度起動しようとしました:
-(void)animateMethod
{
[UIImageView animateWithDuration:arc4random() % 10 + 1
delay:0.0
options:UIViewAnimationOptionCurveLinear
animations:^{
//moving the cloud across the screen here
}
completion:^(BOOL finished) {
NSLog(@"Done!");
[self animateMethod];
}];
}
これにより、私が探している効果が得られますが、ナビゲーションコントローラーを使用して別のビューにプッシュすると、完了ブロックが無限ループで発生するようです(私のログは「完了!」でスパムされます)
適切な方法が必要な目的の効果を得る方法を知っている人はいますか?