2010-05-06 2 views
0

2400x1845 png 이미지를 스크롤보기에로드하고 있습니다. 프로그램이 메모리에서 고장났습니다. 이것을 처리하는 더 좋은 방법이 있습니까? mapScrollView는 IB의 UIScrollView이며 두 개의 UIButton과 함께 있습니다.UIScrollView : 806k 이미지가 너무 많이 처리됩니까? (충돌, 메모리 부족)?

-(void)loadMapWithName:(NSString *)mapName 
    { 

     NSString* bundlePath = [[NSBundle mainBundle] bundlePath]; 
     UIImage *image = [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/path/%@", bundlePath, [maps objectForKey:mapName]]]; 
     UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 

     CGSize imgSize = image.size; 
     mapScrollView.contentSize = imgSize; 

     [mapScrollView addSubview:imageView]; 
     [imageView release]; 

     [self.view addSubview:mapScrollView]; 

    } 

답변

2

UIImages는 iPhoneOS에서 1024x1024로 제한됩니다. 이 문제를 해결하려면 CATiledLayer을 사용하는 것이 유일한 방법이라고 생각합니다.

+0

답변 해 주셔서 감사합니다. 이미지를 타일로 나누는 또 다른 방법이 있습니다. 내가 그것을 보았던 곳을 기억할 수 없다. 감사 – Jordan

1

정확한 정확성을 알지 못하지만, iPhone OS를 타겟팅 할 때 64MB의 실제 메모리를 가이드 라인으로 사용하므로 절반 정도만 사용을 제한하려고합니다. 즉, 원시 할당 크기는 문제가 아닙니다.

기본적으로 UIImage로 래핑 된 CGImageRef (낮은 레벨의 불투명 이미지 형식)를 사용하여이 문제를 해결할 수 있습니다.

다른 포스터에서 언급했듯이이 예제는 허용되는 최대 이미지 크기를 초과합니다. 어떤 장치 (iPhone/iPod)도 해당 축척의 이미지를 지원하지 않으므로 크기 조정/나누기가 고려 될 수 있습니다.