ios - 下载图像时的事件指示器 iOS

标签 ios objective-c uiimageview uiimage activity-indicator

我正在下载一组图像来创建动画。如何使下载开始时显示事件指示器以及下载完成时隐藏事件指示器。

self.img = [[UIImageView alloc] initWithFrame:CGRectMake(0, 65, self.view.frame.size.width, self.view.frame.size.width-70)];



        img.animationImages = [NSArray arrayWithObjects:

                                   [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"URL"]]],

                                   [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"URL"]]],

                                   [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"URL"]]],

                                   [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"URL"]]],




        img.animationDuration = 20.0f;

        img.animationRepeatCount = 0;

        [img startAnimating];

        [self.view addSubview: img];

最佳答案

您的图像正在同步下载,这意味着您正在阻塞主线程(这很糟糕)。相反,在后台线程上运行下载,这将允许主线程以及扩展应用程序的 UI 仍然运行。使用您的示例代码,在后台运行时如下所示:

self.img = [[UIImageView alloc] initWithFrame:CGRectMake(0, 65, self.view.frame.size.width, self.view.frame.size.width-70)];
self.img.animationDuration = 20.0f;
self.img.animationRepeatCount = 0;
[self.img startAnimating];
[self.view addSubview:self.img];

// START ANIMATING YOUR ACTIVITY INDICATOR HERE

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) {

    NSArray *images = @[
        [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"URL"]]],
        [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"URL"]]],
        [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"URL"]]],
        [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"URL"]]],
    ];

    dispatch_async(dispatch_get_main_queue(), ^(void) {

        // STOP ANIMATING YOUR ACTIVITY INDICATOR HERE

        [self.img setAnimationImages:images];

    });

});

关于ios - 下载图像时的事件指示器 iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28509926/

相关文章:

ios - Swift - 在阴影层中切孔

objective-c - 我可以使用 [NSObject hash] 将 NSView 存储在字典中吗?

ios - 快速将 uiimageview 保存到 tableview?

swift - UICollectionViewCell的 subview 绝对框架

ios - 如何检查文档文件夹中是否存在文件?

iphone - 日期格式问题 - 将字符串转换为 MMM d、yyyy 格式的日期

php - 如何使用带参数的字符串从 mySQL 获取数据?

objective-c - 使用Obj-C,Xcode和libxml2的简单libxml2 XML解析示例?

ios - Postman 给出成功响应,而通过代码调用相同的 API 时抛出错误

ios - 无法绘制图像。