2011-08-16 9 views
2

私はUIViewAnimationOptionAutoreverseオプションでUIView animateWithDurationを使用してUIImageViewをスケーリングしてから元に戻します。問題は、アニメーションの最後にイメージアニメーションがちょっとジャギー(痙攣)していることです。ここに私のコードは次のとおりです。UIView animateWithDurationでUIImageViewを適切にスケールする方法は?

[UIView animateWithDuration:0.25 delay:0 options:UIViewAnimationOptionAutoreverse 
    animations:^{ 

    myImage.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.9, 0.9);} 

    completion:^(BOOL finished){if (finished){ 

    myImage.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.0, 1.0);}}]; 

私は何かが欠けてることを知っているが、どこから始めれば分からない:(

UPDATE1:私は、それぞれ次のアニメーションが前の後に実行し、ネストされた6つのアニメーションを実行しています。そのために私はブロックのアニメーションを使用して、完全なブロック内の各次のアニメーションを実行してい

アップデート2:私はUIViewAnimationOptionRepeatオプションを指定して試してみましたが、各スケールアニメーションの後、いくつかのフラッシュ効果はまだあります

答えて

4

。 10は、UIViewAnimationOptionRepeatオプションも使用せずに何もしません。書き込まれたアニメーションによって画像が90%に縮小され、完成ブロックで100%に戻ります。多分、あなたはこのアニメーションを4分の1秒以上で100%にスケールアップする別のアニメーションに続けることができます。このようなもの:

[UIView animateWithDuration:0.25 delay:0 options:UIViewAnimationOptionCurveEaseInOut 
       animations:^{ 
        myImage.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.9, 0.9);} 
       completion:^(BOOL finished){if (finished){ 

    [UIView animateWithDuration:0.25 delay:0 options:UIViewAnimationOptionCurveEaseInOut 
        animations:^{ 
         myImage.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.0, 1.0);} 
        completion:NULL];}}]; 
+1

これらの6つの自動逆転アニメーションの実装では、3ページのうまく並んだコードをカバーしています。今、アニメーションごとに2つの異なるアニメーションを使用すると、私は非常に大きくて面倒なコードで12のアニメーションを作成することになります。私はautoreverseを使っていくらかスペースを節約できると思っていましたが、それがうまくいかない場合、唯一の解決策があります。 – Centurion

0

.hファイルdeclerd。

NSInteger imgint; 

.mコードでコードしてみてください。

-(void) 
{ 
    [NSTimer scheduledTimerWithTimeInterval:(0.85f)target:self selector:@selector(play_btn_animation) userInfo:nil repeats:YES]; 
} 

-(void)play_btn_animation 
{ 
    if(imgint == 0) 
    { 
     [UIView animateWithDuration:0.8 
           delay:0.0 
          options: UIViewAnimationOptionCurveEaseIn 
         animations:^{ 
          img.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.8, 0.8); 
         } 
         completion:^(BOOL finished) { 
          img = 1; 
         }]; 

    } 
    else 
    { 
     [UIView animateWithDuration:0.8 
           delay:0.0 
          options: UIViewAnimationOptionCurveEaseOut 
         animations:^{ 
          img.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1, 1); 
         } 
         completion:^(BOOL finished) { 
          imgint = 0; 
         }]; 
    } 
} 
関連する問題