2012-02-16 2 views
2

Делаю анимацию призывающую несколько раз эту функцию, так что я могу сделать анимацию:UIImageView setImage не работает

метод, где у меня есть вопрос, является метод подкласса Класса А в UIImageView в

@interface MyCustomImageView : UIImageView { 

& это следующее:

- (void) animationShowFrame: (NSInteger) frame { 
    NSLog(@"frame: %d", frame); 

    if ((frame >= animationNumFrames) || (frame < 0)) 
     return; 

    NSData *data = [animationData objectAtIndex:frame]; 
    UIImage *img = [UIImage imageWithData:data]; 
    NSLog(@"%@",img); 
    NSLog(@"data: %d", [data length]); 
    [self setImage:img]; 
} 

проблема заключается в том, что, кажется, что первое изображение прекрасно устанавливается, но остальные игнорируются ... NSLogging их я вижу, что изображения есть & данные разные каждый раз, поэтому они загружаются нормально, даже я пытался добавитьSubview в себя (класс является дочерним элементом UIImageView), через UIImageView &, который они показывают, но это не так, потому что в этом случае я использую слишком много памяти ... Спрашивая описание в консоли, я могу видеть, как self.image = nil после настройки ... Я не знаю, что иначе я могу это сделать, это сводит меня с ума.

+0

Вы переопределили методы 'UIImageView' в своем классе? – Peter

+0

Также проверьте, есть ли другие вызовы 'setImage' где-то – onmyway133

ответ

4

Попробуйте подклассифицировать UIView вместо UIImageView и создайте UIImageView как свойство внутри.

@interface CustomView : UIView { 
    UIImageView *imageView; 

Затем в animationShowFrame использовать эту ImageView:

- (void) animationShowFrame: (NSInteger) frame { 

    NSData *data = [animationData objectAtIndex:frame]; 
    UIImage *img = [UIImage imageWithData:data]; 
    [self.imageView setImage:img]; 
} 

Надеется, что это помогает!

+0

Он отлично работает! Thnks – Oscar

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