2015-02-13 3 views
2

Я загружаю массив изображений для создания анимации. Как я могу сделать, когда загрузка начнет показывать индикатор активности, и когда он закончит, чтобы скрыть индикатор активности.Индикатор активности во время загрузки изображений 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]; 

ответ

2

Ваши изображения загружаются синхронно, что означает, что вы блокируете основной поток (это плохо). Вместо этого запустите загрузку в фоновом потоке, который позволит основному потоку, а в расширении, пользовательский интерфейс вашего приложения будет функционировать. Используя свой пример кода, вот что это будет выглядеть, когда работать в фоновом режиме:

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

    }); 

}); 
0

Напишите этот код, когда загрузка начинается: UIActivityIndicatorView * вертушка = [[UIActivityIndicatorView Alloc] initWithActivityIndicatorStyle: UIActivityIndicatorViewStyleGray]; spinner.frame = CGRectMake (0, 0, 320, 50); [поворот стрелки];

Запишите этот код после окончания загрузки: [spinner stopAnimating];

Смежные вопросы