关于UIImageView显示gif的错误?

时间:2016-12-31 07:12:45

标签: ios uiimageview uiimage gif sdwebimage

我创建一个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:和CAKeyframeAnimation。

有谁知道解决方案?非常感谢。

手指离开屏幕的事件将使imageView正常显示。为什么以及如何解决?

GitHubBugDemo

1 个答案:

答案 0 :(得分:0)

您可以使用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];