2016-12-31 42 views
0

我创建一个UIImageView并添加到VC UIView,然后我创建一个图像animatedImageWithImages:duration:有关UIImageView显示gif的错误?

当我执行代码时,它正常工作。它显示图像动画。但是当我推送到下一个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

你试图在viewWillAppear中? – Fay007

+1

尝试在viewWillAppear委托中加载图像并解决此问题。 – iYoung

+0

它不起作用。 viewWillAppear已经运行,但在手指离开屏幕时什么也不显示。我认为重点是手指离开屏幕的那一刻发生了什么? – EverMe

回答

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]; 
+0

它不起作用。当我推入下一个VC并在向后滑动过程中,UIImageView不显示任何内容,即使手指离开屏幕也不会恢复正常。 – EverMe

+0

只需在.h文件中声明imageView对象并调用此方法[imgView startAnimating];在视图上会出现 –

+0

我试过了,但是失败了。 [这是bug演示](https://github.com/EverMe/TestImgBug)只有几行代码。 – EverMe