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];

在 viewWillAppearNSTimer中,我使用 an 每 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 回答