2012-06-07 2 views
1

У меня есть UImageView, который я установил в построителе интерфейса с помощью png (пары глаз) из моих ресурсов. Затем я хочу заменить это изображение (через определенное количество времени) с оживлением мигания глаз.Замена статического UIImageView анимацией

Это код я использовал, который называется в 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 секунд, но нет изображения открытых глаз между этими анимациями. Может ли кто-нибудь помочь мне решить эту проблему или указать мне в правильном направлении? Благодарю.

ответ

1

Добавить анимационные изображения через 5,0 секунд. Из документов UIImageView:

Массив должен содержать объекты UIImage. Вы можете использовать один и тот же объект изображения более одного раза в массиве. Установка этого свойства в значение, отличное от nil, скрывает изображение, представленное свойством изображения. Значение этого свойства по умолчанию равно нулю.

Если вы задали массив animationImages заранее, он не отобразит изображение.

EDIT: (все с помощью 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]; 
} 
+0

Таким образом, вы могли бы работать, что мной снова? У меня создалось впечатление, что я добавляю анимационные образы через 5 секунд? – garethdn

Смежные вопросы