Неужели UIImageView оживляет разрыв в 4.0 SDK? - PullRequest
3 голосов
/ 15 июня 2011

Следующий код, используемый для работы при сборке с iOS 3.x. Теперь с 4.x это не работает. Другими словами, я могу запускать два одинаковых приложения на одном устройстве, одно из которых построено для выпуска версии 4.x, а другое - для 4.3, а во втором isAnimating не изменяет значения, если не нажать на экран или изменения ориентации.

Вот соответствующий код. Я начал с шаблона на основе View в Xcode.

- (void)viewDidLoad {
    [super viewDidLoad];
    iv.animationImages = [NSArray arrayWithObjects:
                                      [UIImage imageNamed:@"timer00.png"],
                                      [UIImage imageNamed:@"timer01.png"],
                                      [UIImage imageNamed:@"timer02.png"],
                                      [UIImage imageNamed:@"timer03.png"],
                                      [UIImage imageNamed:@"timer04.png"],
                                      [UIImage imageNamed:@"timer05.png"],
                                      [UIImage imageNamed:@"timer06.png"],
                                      [UIImage imageNamed:@"timer07.png"],
                                      [UIImage imageNamed:@"timer08.png"],
                                      [UIImage imageNamed:@"timer09.png"],
                                      [UIImage imageNamed:@"timer10.png"],
                                      [UIImage imageNamed:@"timer11.png"],
                                      [UIImage imageNamed:@"timer12.png"],
                                      [UIImage imageNamed:@"timer13.png"],
                                      [UIImage imageNamed:@"timer14.png"],
                                      [UIImage imageNamed:@"timer15.png"],
                                      [UIImage imageNamed:@"timer16.png"],
                                      [UIImage imageNamed:@"timer17.png"],
                                      [UIImage imageNamed:@"timer18.png"],
                                      [UIImage imageNamed:@"timer19.png"],
                                      [UIImage imageNamed:@"timer20.png"],
                                      [UIImage imageNamed:@"timer21.png"],
                                      [UIImage imageNamed:@"timer22.png"],
                                      [UIImage imageNamed:@"timer23.png"],
                                      [UIImage imageNamed:@"timer24.png"],
                                      [UIImage imageNamed:@"timer25.png"],
                                      [UIImage imageNamed:@"timer26.png"],
                                      [UIImage imageNamed:@"timer27.png"],
                                      [UIImage imageNamed:@"timer28.png"],
                                      [UIImage imageNamed:@"timer29.png"],
                                      [UIImage imageNamed:@"timer30.png"],
                                      [UIImage imageNamed:@"timer31.png"],
                                      [UIImage imageNamed:@"timer32.png"],
                                      [UIImage imageNamed:@"timer33.png"],
                                      [UIImage imageNamed:@"timer34.png"],
                                      [UIImage imageNamed:@"timer35.png"],
                                    [UIImage imageNamed:@"timer36.png"],                                      nil];
    iv.animationDuration = 5.0;
    iv.animationRepeatCount = 1;
    [iv startAnimating];
    timer = [NSTimer scheduledTimerWithTimeInterval:0.5 
                                             target:self 
                                           selector:@selector(periodicallyUpdateView) 
                                           userInfo:nil 
                                            repeats:YES];
}

- (void)periodicallyUpdateView {
    if ([iv isAnimating]) {
        NSLog(@"it is animating");
    }
    else {
        NSLog(@"it is NOT animating");
    }
}

Кто-нибудь еще видит это?

1 Ответ

1 голос
/ 11 июля 2011

Это будет намного эффективнее, если вы установите таймер.Проблема, с которой вы сталкиваетесь, может быть не в том, что UIImageView не работает, а в том, что для загрузки изображения требуется очень много времени.

Я бы порекомендовал что-то подобное.

NSTimer *imageTimer;

int animationCount;

- (void)startAnimation
{
      imageTimer = [NSTimer scheduledTimerWithTimeInterval:.1 target:self selector:@selector(switchImage) userInfo:nil repeats:YES];
}

- (void)switchImage
{
       NSString *imageName = [NSString stringWithFormat:@"timer%i" , animationCount];
       UIImage *image = [UIImage imageNamed:imageName];
       someImageView.image = image;
 }
...