이미지가로드되기 전에 UIActivityIndicator가 셀에 표시되는 UICollectionView가 있습니다. 그러면 UIImageView + AFNetworking 블록에서 성공 또는 실패 여부와 상관없이 해제됩니다. 그러나 때로는 애니메이션 활동을 숨기거나 멈추지 않는 남은 활동 지표가 있습니다.UICollectionView 셀의 UIActivityIndicator가 임의로 숨겨지지 않습니다.
이 내 cellForItemAtIndexPath의 일부입니다
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath {
...
NSURL *imageURL = [NSURL URLWithString:[tmpcamera objectForKey:@"url"]];
NSURLRequest *imageRequest = [NSURLRequest requestWithURL:imageURL cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:10];
UIActivityIndicatorView *activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
activityIndicator.hidesWhenStopped = YES;
activityIndicator.hidden = NO;
activityIndicator.frame = CGRectMake(0, 0, 130, 110);
activityIndicator.tag = 10;
[cell.imageView addSubview:activityIndicator];
[activityIndicator startAnimating];
__weak typeof(FavouriteCell) *weakImage = cell;
[cell.imageView setImageWithURLRequest:imageRequest
placeholderImage:[UIImage imageNamed:@"trans50.png"]
success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *i)
{
[activityIndicator stopAnimating];
activityIndicator.hidden = YES;
[activityIndicator removeFromSuperview];
[weakImage.imageView setImage:i];
}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error)
{
[activityIndicator stopAnimating];
activityIndicator.hidden = YES;
[activityIndicator removeFromSuperview];
[weakImage.imageView setImage:[UIImage imageNamed:@"errorimage.png"]];
}];
...
}
이 코드는 문제가 무엇인지 디버깅하기에 충분하지만, 어떤 아이디어를 주시면 감사하겠습니다 만약 내가 확실 해요.
내가 무슨 말의 샘플 스크린 샷은 여기에 있습니다 : 당신의 세포가 재생 될 수 있기 때문에
감사합니다! 내가 그것을 다시 일으키기 위해 잡아 당기기를 사용하고있는 것처럼 스크롤을 일으키는 것으로 가정합니다. 그리고 내가 아주 빨리 그것을 할 때만 일어납니다. 나는 너의 제안을 시도 할 것이다. –
두 제안 사항은 대안으로 사용됩니다. 셀에 활동 지표 아이디어를 추가하거나 태그 속성을 사용하여 기존 활동 지표를 추적 할 수 있습니다. :) – dmercredi
는 또한 UICollectionViewCell의
prepareForReuse
메서드를 재정하여 몇 가지 정리를 작동 할 수있다. dmercredi의 # 1 제안 (권장)을 따르고 있었다면stopAnimating
을 호출 한 다음 activityIndicator를 숨길 수 있습니다. –