0

UIViewsまたはxcodeのUIImageViewsのアニメーションをいつでも作成する方法ですが、ユーザーがアプリを使用している間、アニメーションはいつでも表示されます。私のアニメーションは次のようになります。

- (void)showAnimation
{


    [UIImageView beginAnimations:@"EFFECT_SHOW" context:nil];
    [UIImageView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIImageView setAnimationDuration:5.0f];

    self.imageAnimation.frame = CGRectMake(400, imageAnimation.frame.origin.y, imageAnimation.frame.size.width, imageAnimation.frame.size.height);
    self.imageAnimation2.frame = CGRectMake(-400, imageAnimation2.frame.origin.y, imageAnimation2.frame.size.width, imageAnimation2.frame.size.height);

    [UIImageView commitAnimations];
}

&メトッドを呼び出すときは、[self showAnimation]を実行しますが、viewDidloadでは、アニメーションを1回だけ表示します。いつでもどのように作成しますか?「しばらく」の静止が必要ですか?または私は別のボイドにいることができますか?

ラパスとサンタクルスデラシエラからの助けと挨拶に感謝します-ボリビア!!! ロックオン!!! n_n '

4

2 に答える 2

2

の一部であるブロック アニメーションを使用しますUIViewView Programming Guide for iOSには、アニメーションに関する優れたセクションがあります。

メソッド呼び出し時

+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion

おそらく必要な「オプション」はUIViewAnimationOptionAutoreverse.

例えば:

[UIView animateWithDuration:5.0f delay:0 options:UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat animations:^{
    self.imageAnimation.frame = CGRectMake(400, imageAnimation.frame.origin.y, imageAnimation.frame.size.width, imageAnimation.frame.size.height);
    self.imageAnimation2.frame = CGRectMake(-400, imageAnimation2.frame.origin.y, imageAnimation2.frame.size.width, imageAnimation2.frame.size.height);
} completion:nil];

編集:ええ..繰り返さないのは私のせいです。ドキュメントによると……。

UIViewAnimationOptionAutoreverse

アニメーションを前後に実行します。UIViewAnimationOptionRepeatオプションと組み合わせる必要があります。

を含めるようにコードを更新しましたUIViewAnimationOptionRepeat。これで動作するはずです。

于 2013-03-08T18:38:32.727 に答える
0

アニメーションが完了したら、もう一度 showAnimation メソッドを呼び出すだけです

 - (void) showAnimation
{
    //TODO: maybe reset you animation
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIView animateWithDuration:5.0f animations:^(){
            // define animation
            self.imageAnimation.frame = CGRectMake(400, imageAnimation.frame.origin.y, imageAnimation.frame.size.width, imageAnimation.frame.size.height);
            self.imageAnimation2.frame = CGRectMake(-400, imageAnimation2.frame.origin.y, imageAnimation2.frame.size.width, imageAnimation2.frame.size.height);
        }
        completion:^(BOOL finished){
            // after the animation is completed call showAnimation again
            [self showAnimation];
    }]; 
}
于 2013-03-08T21:49:44.523 に答える