3
我有一個UICollectionView,其中一個UIActivityIndicator在圖像加載之前顯示在單元格中,然後無論UIImageView + AFNetworking塊中的成功或失敗都會被忽略。不過有時我會得到一些似乎沒有隱藏或停止動畫的剩餘活動指標。UIAollectionView單元格中的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的第一條建議(我建議),您只需致電stopAnimating
,然後隱藏activityIndicator。 –