1

テキストがフェードアウトするときにテキストが下に移動すると同時に、以前と同じ場所に再表示され、同じアニメーションを実行するアニメーションを作成しようとしています。ここに私のコード:

for (int i=0; i<10; i++)
{
    [UIView animateWithDuration:0.5
                          delay:0.2f
                        options:UIViewAnimationCurveEaseInOut
                     animations:^{
                         productTextLabel.center = CGPointMake(381, 410);
                         productTextLabel.alpha = 0.0;
                         productTextLabel.center = CGPointMake(381, 340);
                         productTextLabel.alpha = 1;
                     }
                     completion:^(BOOL fin) {
                     }];

}

私の問題は、このアニメーションを複数回発生させようとしていることです。for ループを使用していますが、一度しか実行しません。

4

2 に答える 2

0

このようにしてみてください、それは私のために働きました:

__block void (^fadePart1)() = ^{ productTextLabel.center = CGPointMake(381.f, 410.f); productTextLabel.alpha = 0.f; };
__block void (^fadePart2)() = ^{ productTextLabel.center = CGPointMake(381.f, 340.f); productTextLabel.alpha = 1.f; };
__block void (^fadePart1Finished)(BOOL finished) =  ^(BOOL finished) {
    if (_willFinishAnimation == false) {
        [UIView animateWithDuration:0.5f delay:0.2f options:UIViewAnimationCurveEaseInOut|UIViewAnimationOptionAllowUserInteraction animations:fadePart2 completion:^(BOOL finished) {
            if (_willFinishAnimation == false) [UIView animateWithDuration:0.5f delay:0.2f options:UIViewAnimationCurveEaseInOut|UIViewAnimationOptionAllowUserInteraction animations:fadePart1 completion:fadePart1Finished];  
        }]; 
    }
};
fadePart1Finished(false);

グローバルBoolean _willFinishAnimation;変数がありました。アニメーションを設定する前に、それを設定しました。falseエフェクトを終了したいときはtrue、それを設定しました。

于 2012-08-21T16:33:32.530 に答える