UICollectionView에 문제가있어 다음 영역으로 좁혔습니다. 문제는 UICollectionView에서 다시로드를 호출 할 때 깜박임이 발생하고 1 개의 이미지가로드 된 다음 올바른 이미지가 두 번째로로드된다는 것입니다. 거의 새로운 셀을 스크롤하면 아무런 스크롤없이 새 셀을 스크롤 할 때와 비슷합니다.다시로드 할 때 UICollectionView가 깜박이며 requestImageForAsset을 호출하는 중
는 지금은 일반
sampleImage.image = [UIImage imageNamed:@"LogoHome"];
으로 테스트했습니다 그리고 난 전혀 깜박임 그래서 난
의 내부에 다음 코드[self.imageManager requestImageForAsset:[self.arrayPhotoAssets objectAtIndex:indexPath.row]
targetSize:CGSizeMake(imageWidth, imageHeight)
contentMode:PHImageContentModeAspectFill
options:nil resultHandler:^(UIImage *result, NSDictionary* info){
UIImageView *sampleImage = (UIImageView *)[cell viewWithTag:1];
sampleImage.image = result;
}];
로 좁혀없는 한 수
- (UICollectionViewCell *) collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
위와 같은 일이 발생하지 않도록 코드를 조정할 수있는 방법이 있습니까? 여기에 전체 코드 조각은 다음과 같습니다
- (UICollectionViewCell *) collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
////// GALLERY COLLECTION VIEW
if(collectionView.tag == 1){
static NSString *cellIdentifier = @"galleryCell";
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];
float imageWidth = 77;
float imageHeight = 77;
UIScreen *mainScreen = [UIScreen mainScreen];
//NSLog(@"%f",mainScreen.bounds.size.width);
// IPHONE 6
if(mainScreen.bounds.size.width == 375){
imageWidth = 92;
imageHeight = 92;
}
// IPHONE 6 PLUS
if(mainScreen.bounds.size.width == 414){
imageWidth = 102;
imageHeight = 102;
}
[self.imageManager requestImageForAsset:[self.arrayPhotoAssets objectAtIndex:indexPath.row]
targetSize:CGSizeMake(imageWidth, imageHeight)
contentMode:PHImageContentModeAspectFill
options:nil resultHandler:^(UIImage *result, NSDictionary* info){
UIImageView *sampleImage = (UIImageView *)[cell viewWithTag:1];
sampleImage.image = result;
}];
return cell;
}
UICollectionViewCell *cell;
return cell;
}
확실히 개선되었지만 여전히 약간의 깜박임이 있지만 더 이상 2 장의 이미지 사이를 비벼 지 않습니다. – ORStudios
깜박임은 지연 때문에, imageview의 이미지를 nil로 설정하는 것과 새 이미지를 다운로드하는 것, 그리고 새로운 이미지를 imageview에 할당하는 것입니다. 이를 피하려면 requestImageForAsset이 다운로드 한 이미지를 캐시해야합니다. – azimov
고마워요. "PHCachingImageManager"가 필요한 것이 아닙니까? 라이브러리 캐싱을보고 있었고 이전 버전에서했던 것입니다. 그러나 이번에는 위의 코드를 대신 사용할 것입니다. – ORStudios