iOS下载图像时的活动指示器



我要下载一组图像来创建动画。我如何使下载开始时显示活动指示器和结束时隐藏活动指示器。

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];
    });
});

在下载开始时编写以下代码:UIActivityIndicatorView*微调器=[[UIActivityIndicatorView alloc]initWithActivityIndirectorStyle:UIActivityIndecatorViewStyleGray];spinner.frame=CGRectMake(0,0,320,50);[spinner startAnimationing];

下载结束时编写以下代码:[spinner stopAnimating];

最新更新