환경 :iOS 앱 : 지연 문제 때 디스플레이 작은 이미지의 엄청난 양의
나는 "photo mosaic"응용 프로그램을 만드는 오전, 나는 작은 이미지 1024 (32 * 32) 조각을 표시하려고 (망막 크기 -> w : 30px h : 20px)를 선택합니다. 즉, 전체 화면 이미지 크기와 동일한 크기입니다.
문제 :
내가 1024 UIImages을로드 1024 UIImageViews를 작성하고 UIView의에 그들 모두를 추가 할 수 있습니다. 이보기로 스크롤하면 iPhone4 (iOS 5) 및 iPhone5 (iOS 6)에 대한 테스트가 크게 지연됩니다. iPhone4에 그냥 나타 났으며 iPhone5에서도 괜찮습니다. (iPhone5가 훨씬 더 좋은 CPU를 가지고 있다고 가정하면 합리적이라고 생각합니다.) 모든 이미지를 가정 할
이미 (방법 "imageNamed"을 사용) 메모리에 로컬 디렉토리에서로드 된, 그래서 나는/문제가 단계 디스플레이의 어딘가에 있어야합니다 생각 :
내가 무슨 생각 이미지를 렌더링합니다.
그럼 그것에 대해 어떤 생각이 드나요? 어떤 아이디어라도 도움이 될 것입니다.
정말 고마워요,
UPDATE
내가 @Antwan 반 Houdt에서 조언을했다 후가 훨씬 낫다. 여기에 원칙 코드 : 그럼 당신은 그냥 제로 smallImage의 알파 값을 설정
-(void)updateCoverImageView:(UIImageView *)smallImage{
UIGraphicsBeginImageContextWithOptions(self.frame.size, NO, 0.0f);
CGContextRef ctx = UIGraphicsGetCurrentContext();
[self.coverImageView.layer renderInContext:ctx];
[smallImage.image drawInRect:smallImage.frame];
self.coverImageView.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}
, 그래서 시스템을 렌더링하지 않습니다. 그리고 표지 이미지가 그것을 대체 할 것입니다. 많은 시간 동안 UIView를 동시에 표시 할 때 발생하는 지연 문제가 해결됩니다.
예 .. 거기 UIView에 추가 된 1024 UIImages 및 1024 UIImageViews 있습니다. (내 게시물을 편집 한) – swang
+1 불합리한 양의 UIViews 사용을 방지하기 위해 사용자 지정 그림을 추천합니다. – Till
@swang 많은 뷰가 있습니다 ... 모든 UIView에는 자체 드로잉 컨텍스트가 있습니다. 이것은 애플 리케이션의 메모리 사용에 대해 '편리한'것은 아닙니다.당신은 정말로 적은 관점으로 이동해야합니다. –