2013-07-05 3 views
2

У меня есть UITableViewCell, который имеет 2 UIImageView, определенный в файле xib. Теперь я пришел с идеей украсить ui, и я хотел бы изменить время выполнения UIImageView с UIActivityIndicatorView, пока асинхронный ответ не вернется.замените UIImageView на UIActivityIndicatorView при загрузке изображения в UITableViewCell

К сожалению, UIActivityIndicatorView не отображается вообще, просто полное изображение по окончании.

Вот relavant часть кода:

-(UITableViewCell *)tableView:(UITableView *)tableView 
     cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell *cell = 
     [tableView dequeueReusableCellWithIdentifier:myTableCellId]; 
    cell.selectionStyle = UITableViewCellSelectionStyleNone; 

...

UIImageView *imageView = (UIImageView *)[cell viewWithTag:200]; 

...

imageView.image=nil; // reset image as it will be retrieved asychronously 

    UIActivityIndicatorView *loadingActivity = [[UIActivityIndicatorView alloc] 
     initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; 
    [loadingActivity startAnimating]; 

    loadingActivity.frame = imageView.frame; 
    UIView* parent = [imageView superview]; 
    [parent addSubview:loadingActivity]; 
    [parent bringSubviewToFront:loadingActivity];  

    [myObject callMyFunction:index completionBlock:^(UIImage *img) { 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      imageView.image=img; 
      [loadingActivity stopAnimating]; 
      [loadingActivity removeFromSuperview]; 
      //DLog(@"Got image for: %@", titleLabel.text); 
     }); 
    }]; 

    return cell; 
} 

Любые идеи, что не так?

+1

Может быть, глупый вопрос с моей стороны, но есть ли белый спиннер на белом фоне? –

+0

@Benoit да это помогает, добавьте в качестве ответа, чтобы его приняли !!! :) –

ответ

3

Если у вас есть белый счетчик на белом фоне, он не будет отображаться.

1

Установите рамку, а затем запустите анимацию. Также попробуйте изменить кадр, который вы ему назначили.

loadingActivity.frame = CGRectMake(20, 20, 40, 20) 

Вы также можете установить свойство loadingActivity.hidesWhenStopped = YES; а не делать removeFromSuperview.

+0

+ 1, нужен серый фон и видно, на белом нет, попробовал ваше решение тоже, спасибо –

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