Ошибка о UIImageView дисплей gif?

Я создаю UIImageView и добавляю в VC UIView, затем я создаю изображение с animatedImageWithImages:duration:

Когда я выполняю код, он работает нормально. Он отображает анимацию изображения. Но когда я нажимаю на следующий VC и в процессе прокрутки назад , я нахожу, что UIImageView ничего не отображает.
На данный момент палец покинул экран, все вернулось в норму.

Вот мой код:

- (void)viewDidLoad {
     [super viewDidLoad];               
     UIImageView *imgView = [[UIImageView alloc] init];
     imgView.backgroundColor = [UIColor orangeColor];
     imgView.frame = CGRectMake(20, 200, 80, 80);
     [self.view addSubview:imgView];     
     NSArray *imgs = @[[UIImage imageNamed:@"img1"],[UIImage imageNamed:@"img2"]];
     imgView.image = [UIImage animatedImageWithImages:imgs duration:0.5];
}

BugGif

Я заметил, что imageView имеет CAKeyframeAnimation. Я предполагаю конфликт, который runmode и CAKeyframeAnimation.

SDWebImage имеет ту же проблему. Потому что он также использует метод, который создает UIImage. Я думаю, что речь идет о методе animatedImageWithImages: duration: and CAKeyframeAnimation.

Кто-нибудь знает решение? Большое спасибо.

Событие, что палец покинул экран сделает imageView дисплей нормально. Почему и как решить?

GitHubBugDemo

1 ответ

  1. Вы можете использовать UIImageView другие методы для установки изображений и продолжительности анимации, как показано ниже

    UIImageView *imgView = [[UIImageView alloc] init];
    imgView.backgroundColor = [UIColor orangeColor];
    imgView.frame = CGRectMake(20, 200, 80, 80);
    NSArray *imgs = @[[UIImage imageNamed:@"img1"],[UIImage imageNamed:@"img2"]];
    [imgView setAnimationImages:imgs];
    [imgView setAnimationDuration:1];
    [imgView setAnimationRepeatCount:HUGE_VAL];
    [imgView startAnimating];
    [self.view addSubview:imgView];