UICollectionView
은 코어 이미지로 조작 한 이미지가 포함 된 셀이 주로 채도가 낮은 이미지로 구성된 UICollectionView
입니다. 스크롤 할 때 성능은 절대적으로 끔찍합니다. 프로필을 작성할 때, 대부분의 시간 (80 % 정도)은 내 코드 또는 스택에 있지 않습니다. 모두 Core Animation 코드에있는 것 같습니다. 왜 이것이 될 수 있는지 아는 사람이 있습니까?UICollectionView Core Image 조작 이미지가있는 UIImageViews의 성능이 좋지 않습니다.
UIImage *img = [self obtainImageForCell];
img = [img applySaturation:0.5];
self.imageView.image = img;
applySaturation
는 다음과 같습니다 :
CIImage *image = [CIImage imageWithCGImage:self.CGImage];
CIFilter *filter = [CIFilter filterWithName:@"CIColorControls"];
[filter setValue:image forKey:kCIInputImageKey];
[filter setValue:[NSNumber numberWithFloat:saturation] forKey:@"inputSaturation"];
return [UIImage imageWithCIImage:filter.outputImage];
내 유일한 생각은 코어 애니메이션은 코어 이미지와 잘 재생되지 않는다는 것입니다 내 UICollectionViewCell
서브 클래스에서
나는 이런 식으로 뭔가가있다. CIImage 객체에 연관된 이미지 데이터를 가지고
있지만, 이미지 일치하지 않음 Apple docs이 약
CIImage
말한다. CIImage 객체를 이미지 "recipe"로 생각할 수 있습니다. CIImage 객체는 이미지를 생성하는 데 필요한 모든 정보를 가지고 있지만 코어 이미지는 실제로 그렇게 할 때까지 이미지를 렌더링하지 않습니다. 이 "게으른 평가"방법은 Core Image가 가능한 한 효율적으로 작동하도록합니다.
애니메이션 처리 중 마지막 단계에서이 평가를하는 것은 까다로울 수 있습니다.
필터링을 한 번 시도해 본 결과가 캐싱 되었습니까? –
나는 같은 슬로우 스크롤 동작을 참조하십시오. – openfrog