2

imageview 上の 2 つの画像の間の点滅をアニメーション化して、ユーザーの注意をインジケーターに向けて変化に気付くようにしようとしています。新しい画像に残る前に、画像を 1 ~ 2 回だけ点滅させたいと思います。イベントのタイムラインは次のようになります。

  1. 古いイメージが設定され、特定のイベントが発生するのを待っています。
  2. イベントが発生し、点滅アニメーションが始まります。新しい画像が 0.25 秒間表示されます。
  3. 古い画像が 0.25 秒間表示されます。
  4. 新しい画像が 0.25 秒間表示されます。アニメーションが終了します。

アニメーションの時間枠が短いため、NSTimer を使用せずにこれを行う方法があるという印象を受けました。私の現在の試みは以下です

+(void)blinkImage:(UIImageView*)view toNewImage:(UIImage*)newImage numOfTimes:(int)numOfTimes{

    float waitInterval = 0.25;
    float totalWaitTime = 0.0;
    UIImage *oldImage = view.image;

    view.image = newImage;
    totalWaitTime = totalWaitTime+waitInterval;

    for (int times = 0; times<numOfTimes; times++) {
        [UIView beginAnimations:@"setOld" context:nil];
        [UIView setAnimationDelay:totalWaitTime];
        [UIView setAnimationDuration:waitInterval];
        view.image = oldImage;
        totalWaitTime = totalWaitTime+waitInterval;
        NSLog(@"SetOld; waitTime %f", totalWaitTime);
        [UIView commitAnimations];

        [UIView beginAnimations:@"setNew" context:nil];
        [UIView setAnimationDelay:totalWaitTime];
        [UIView setAnimationDuration:waitInterval];
        view.image = newImage;
        totalWaitTime = totalWaitTime+waitInterval;
        NSLog(@"SetNew; waitTime %f", totalWaitTime);
        [UIView commitAnimations];
    }
}

しかし、これは期待された結果をもたらしませんでした。上記のコードでは、ビューは単純に新しい画像に変更され、それ以上何もしませんでした。

どんな助けでも大歓迎です。前もって感謝します!

4

2 に答える 2

1

ここにこの1行を入れてくださいsetAnimationDuration

[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:yourView cache:YES];

ここでは、さまざまなタイプのアニメーション..また、アニメーションに次の別の方法を使用できます

#define kAnimationKey @"transitionViewAnimation"

CATransition *animation = [CATransition animation];
    [animation setDelegate:self];   
    [animation setType:kCATransitionFromBottom];
    [animation setDuration:1.0];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:
                                  kCAMediaTimingFunctionEaseInEaseOut]];
    [[yourView layer] addAnimation:animation forKey:kAnimationKey];
于 2012-06-18T14:00:00.807 に答える
0

Why not just use the UIImageView's built in animations?

Animating Images
  animationImages  (property)
  highlightedAnimationImages  (property)
  animationDuration  (property)
  animationRepeatCount  (property)
– startAnimating
– stopAnimating
– isAnimating

Or you could always just set the highlighted image and switch that instead of the entire image

- (id)initWithImage:(UIImage *)image highlightedImage:(UIImage *)highlightedImage
于 2012-06-18T14:02:18.043 に答える