在uiimageview中加载像gif这样的图像时出错

Posted

技术标签:

【中文标题】在uiimageview中加载像gif这样的图像时出错【英文标题】:Error when load images like gif in uiimageview 【发布时间】:2015-09-25 21:28:15 【问题描述】:

我想加载像 gif 这样的图像。当我通过 push segue 转到 viewcontroller 时,它工作得很好,但是当我通过模态 segue 转到 viewcontroller 时,不会在 imageview 中加载图像。

_ivDummy.animationImages = [NSMutableArray arrayWithObjects:
                                         [UIImage imageNamed:@"1.png"],
                                         [UIImage imageNamed:@"2.png"],
                                         [UIImage imageNamed:@"3.png"],
                                         [UIImage imageNamed:@"4.png"],
                                         [UIImage imageNamed:@"5.png"],
                                         [UIImage imageNamed:@"6.png"],
                                         [UIImage imageNamed:@"7.png"],
                                         [UIImage imageNamed:@"8.png"],
                                         nil];
    [_ivDummy setBackgroundColor:[UIColor redColor]];

    _ivDummy.animationDuration = 1.0f;
    _ivDummy.animationRepeatCount = INFINITY;
    [_ivDummy startAnimating];

请帮帮我。

正在进行中

[indicator removeFromSuperview];
        UIImageView* animatedImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 45.0f, 45.0f)];
        animatedImageView.animationImages = [NSMutableArray arrayWithObjects:
                                               [UIImage imageNamed:@"1.png"],
                                               [UIImage imageNamed:@"2.png"],
                                               [UIImage imageNamed:@"3.png"],
                                               [UIImage imageNamed:@"4.png"],
                                               [UIImage imageNamed:@"5.png"],
                                               [UIImage imageNamed:@"6.png"],
                                               [UIImage imageNamed:@"7.png"],
                                               [UIImage imageNamed:@"8.png"],
                                               nil];
        //[animatedImageView setBackgroundColor:[UIColor redColor]];

        animatedImageView.animationDuration = 1.0f;
        animatedImageView.animationRepeatCount = INFINITY;
        [animatedImageView startAnimating];
        indicator=animatedImageView;
        [self addSubview:indicator];

【问题讨论】:

你在哪里写了这段代码,在 viewDidLoad 中? @Mrunal yes in viewDidLoad 这就是问题所在,应该在viewWillAppear 或者viewDidAppear 中。因为在那之前,你的 UIObjects 没有被正确初始化。所以你的 _ivDummy 对代码运行者来说是未知的。 @Mrunal 谢谢。现在它完全可以工作了,但是我为 MBprogresshud 之类的加载程序编写代码,而不是在上面工作。 为此提出另一个问题,并提到您尝试过的代码。在此处让我知道您的新问题链接。 【参考方案1】:

而不是使用 - (void)viewDidLoad 方法尝试使用 - (void)viewWillAppear:(BOOL)动画

-(void)viewWillAppear:(BOOL)animated

    _ivDummy.animationImages = [NSMutableArray arrayWithObjects:
                                [UIImage imageNamed:@"1.png"],
                                [UIImage imageNamed:@"2.png"],
                                [UIImage imageNamed:@"3.png"],
                                [UIImage imageNamed:@"4.png"],
                                [UIImage imageNamed:@"5.png"],
                                [UIImage imageNamed:@"6.png"],
                                [UIImage imageNamed:@"7.png"],
                                [UIImage imageNamed:@"8.png"],
                                nil];
    [_ivDummy setBackgroundColor:[UIColor redColor]];
    _ivDummy.animationDuration = 1.0f;
    _ivDummy.animationRepeatCount = INFINITY;
    [_ivDummy startAnimating];

您可以重写此方法以执行与显示视图相关的自定义任务。

【讨论】:

谢谢。它完全可以工作,但我为 MBprogresshud 之类的加载程序编写代码,但没有在上面工作。 我有 mbprogesshud 但我不想使用它。我去设计自己的progesshud。

以上是关于在uiimageview中加载像gif这样的图像时出错的主要内容,如果未能解决你的问题,请参考以下文章

在同一个 UIImageView 中加载多个图像会在显示新图像之前闪烁最后一个图像

在 Swift 中使用 AlamofireImage 将 GIF 图像转换为 UIImageView

在表格视图单元格中加载和缓存多个 UIImageView 不起作用

如何使用 IBDesignable UIImageView 在 prepareForInterfaceBuilder 中加载图像

UIImageView 和 UIButton 背景图像在模拟器中加载时变黑

下载图像时使用 gif 作为占位符