Я пытаюсь реализовать UICollectionView
и показывать изображения. Я использую SDWebimage
, который отлично работает в tableviewcells, но когда я попытался использовать его в UICollectionviewCell
, он не останавливается и не удаляет индикатор активности. Он размещает изображение-заполнитель, если загруженного изображения нет. Я не уверен, в чем разница между tableviewcell и collectionviewcell, которая может вызвать эту проблему.
Вот код:
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"personImageCell";
PersonCollectionViewCell *cell = (PersonCollectionViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];
Person *person = [self.fetchedResultsController objectAtIndexPath:indexPath];
NSString *imgURL=[person.imageurl stringByAppendingString:@"?maxheight=300&maxwidth=400"];
UIActivityIndicatorView *activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
activityIndicator.hidesWhenStopped = YES;
activityIndicator.hidden = NO;
[activityIndicator startAnimating];
activityIndicator.center = CGPointMake(cell.ivPersonImage.frame.size.width /2, cell.ivPersonImage.frame.size.height/2);
[cell.ivPersonImage setImageWithURL:[NSURL URLWithString:imgURL] placeholderImage:nil options:SDWebImageProgressiveDownload success:^(UIImage *image, BOOL cached){
[activityIndicator stopAnimating];[activityIndicator removeFromSuperview];
NSLog(@"activity indicator should be removed");
}failure:^(NSError *error){
[activityIndicator stopAnimating];[activityIndicator removeFromSuperview];
cell.ivPersonImage.image = [UIImage imageNamed:@"placeholder.png"];
}];
[cell.ivPersonImage addSubview:activityIndicator];
return cell;
}
ОБНОВИТЬ:
Когда я делаю NSLog(@"activity indicator should be removed %@,activityIndicator);
Я получаю этот вывод:
activity indicator should be removed <UIActivityIndicatorView: 0xa520ab0; frame = (65 90; 20 20); hidden = YES; layer = <CALayer: 0xa520b60>>
Он показывает, что UIActivityindicator
скрыт, но все еще отображается поверх изображения.
[cell.ivPersonImage addSubview:activityIndicator];
перед установкой изображения вsetImageWithURL...
- person Nekto   schedule 15.10.2012