1

私はUImageView自分のリソースからpng(目のペア)を使用してインターフェイスビルダーで設定したものを持っています。次に、この画像を(特定の時間が経過した後)まばたきのアニメーションに置き換えたいと思います。

これは私が使用したコードで、次のように呼び出されviewWillAppearます。

NSString *fileName; 
    NSMutableArray *imageArray = [[NSMutableArray alloc] init];
    for(int i = 1; i < 12; i++) {
        fileName = [NSString stringWithFormat:@"HDBlinkPage1/hd_eyes_blinking%d.png", i];
        [imageArray addObject:[UIImage imageNamed:fileName]];
    }
    imgHDBlink.userInteractionEnabled = YES;
    imgHDBlink.animationImages = imageArray;
    imgHDBlink.animationDuration = 0.9;
    imgHDBlink.animationRepeatCount = 1;
    imgHDBlink.contentMode = UIViewContentModeScaleToFill;
    //[self.view addSubview:imgHDBlink];
    [imgHDBlink startAnimating];

viewWillAppearでは、を使用しNSTimerて5秒ごとにアニメーションをトリガーします。

[NSTimer scheduledTimerWithTimeInterval:5.0
                                     target:self
                                   selector:@selector(blinkAnimation)
                                   userInfo:nil
                                    repeats:YES];

問題は、アプリケーションを実行すると、最初の静止画像がまったく表示されないことです。5秒ごとにアニメーションが表示されますが、これらのアニメーションの間に開いた目の画像はありません。誰かが私がこの問題を解決するのを手伝ってくれるか、正しい方向に私を向けることができますか?ありがとう。

4

1 に答える 1

1

5.0秒後にアニメーション画像を追加します。UIImageViewドキュメントから:

配列にはUIImageオブジェクトが含まれている必要があります。配列内で同じ画像オブジェクトを複数回使用できます。このプロパティをnil以外の値に設定すると、imageプロパティで表される画像が非表示になります。このプロパティの値は、デフォルトではnilです。

事前にanimationImages配列を設定しておくと、画像は表示されません。

編集:(すべてARCを使用)

- (void) viewDidLoad {
  [super viewDidLoad];

  //Initialize self.imgHDBlink
}

- (void) viewDidAppear: (BOOL) animated {
    [super viewDidAppear: animated];

    self.imgHDBlink.image = [UIImage imageNamed: @"static_image"];

    [NSTimer scheduledTimerWithTimeInterval: 5.0
                                     target: self
                                   selector: @selector(blinkAnimation:)
                                   userInfo: nil
                                    repeats: YES];
}

- (void) blinkAnimation: (NSTimer*) timer {

    self.imgHDBlink.animationImages = [NSArray array];  //Actually add your images here
    [self.imgHDBlink startAnimating];

    [self.imgHDBlink performSelector: @selector(setAnimationImages:) withObject: nil afterDelay: self.imgHDBlink.animationDuration];
}



//Remember this to stop crashes if we are dealloced
- (void) dealloc {
    [NSObject cancelPreviousPerformRequestsWithTarget: self 
                                             selector: @selector(blinkAnimation:) 
                                               object: nil];
}
于 2012-06-07T11:55:13.850 に答える