1

ECG(ハートビートモニター)と同じように連続パルス効果を実現したい。現在、2 つのアニメーション ブロックを使用しています。

[UIView animateWithDuration: 2.0f delay: 0.0f options: UIViewAnimationOptionRepeat  | UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionTransitionNone | UIViewAnimationOptionOverrideInheritedDuration
                 animations:^{ [image1 setFrame:CGRectMake(0,200,320,70)];}
                 completion:^(BOOL finished){[image1 setFrame:CGRectMake(-320,200,320,70)];}];

[UIView animateWithDuration:2.0f delay:0.0f options:UIViewAnimationOptionRepeat | UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionTransitionNone | UIViewAnimationOptionOverrideInheritedDuration
                 animations:^{ [image2 setFrame:CGRectMake(320,200,320,70)];}
                 completion:^(BOOL finished){[image2 setFrame:CGRectMake(0,200,320,70)];}];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];

[UIView commitAnimations];

このアニメーションは終了後に繰り返しますが、もう一度見つめる前に少し間があります..その間の一時停止を取り除き、連続した滑らかなアニメーションを実現したい..

よくわからない場合は、この種の効果を達成したいと思います..

どんなヘップでも大歓迎です..

前もって感謝します..

UIViewAnimationCurveEaseInOut も試しましたが、まだ一時停止しています..

4

2 に答える 2

4

最後に、次のことがわかりました...以下のコードを使用して、スムーズで一時停止しないアニメーションを実現しました。

[UIView animateWithDuration:2.5f delay:0.0f options:UIViewAnimationOptionRepeat | UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionCurveLinear
                 animations:^{ [image1 setFrame:CGRectMake(0,200,320,70)];}
                 completion:^(BOOL finished){}];

[UIView animateWithDuration:2.5f delay:0.0f options:UIViewAnimationOptionRepeat | UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionCurveLinear
                 animations:^{ [image2 setFrame:CGRectMake(320,200,320,70)];}
                 completion:^(BOOL finished){}];

重要な変更は、UIViewAnimationCurveLinearUIViewAnimationOptionCurveLinearに置き換える必要があったことです。

于 2013-02-06T05:47:57.703 に答える
1

これは私にとっては、一時停止することなく機能します。

サイズではなく位置だけを変更するので、フレームではなく中央を変更する方がよい場合があります

float originalX = image1.center.x;
[UIView animateWithDuration: 2.0f delay: 0.0f options: UIViewAnimationCurveLinear | UIViewAnimationOptionRepeat  | UIViewAnimationOptionAllowUserInteraction                         
          animations:^{ image1.center = CGPointMake(originalX + 320, image1.center.y);}
                         completion:^(BOOL finished){}];

完了ブロックで元の位置を設定する必要はありません。「繰り返し」オプションで設定できます。

于 2013-02-05T11:04:54.100 に答える