2012-05-02 3 views
1

캐시 또는 문서에 저장된 이미지의 장치 수정 자 ~ ipad, ~ iphone, @ 2x를 활용할 수있는 방법이 있습니까? 내가 아는 한 파일은 주 번들에 저장되어있는 경우에만 작동합니다.문서 또는 캐시 폴더의 iOS 파일 이름 장치 수정 자 (~ ipad, ~ iphone) 사용

NSArray *cachePaths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); 
NSString *cachePath = ([cachePaths count] > 0) ? [cachePaths objectAtIndex:0] : nil; 
NSString *cacheResourcesPath = [cachePath stringByAppendingPathComponent:@"Resources"]; 

NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); 
NSString *documentPath = ([documentPaths count] > 0) ? [documentPaths objectAtIndex:0] : nil; 
NSString *documentsResourcesPath = [documentPath stringByAppendingPathComponent:@"Resources"]; 

    // SUCCESS (/caches/resources) 
    UIImage *image = [UIImage imageWithContentsOfFile:[cacheResourcesPath stringByAppendingPathComponent:@"image~ipad.png"]]; 

    // FAIL (/caches/resources) 
    UIImage *image = [UIImage imageWithContentsOfFile:[cacheResourcesPath stringByAppendingPathComponent:@"image.png"]]; 

    // SUCCESS (/documents) 
    UIImage *image = [UIImage imageWithContentsOfFile:[documentsResourcesPath stringByAppendingPathComponent:@"image~ipad.png"]]; 

    // FAIL (/documents) 
    UIImage *image = [UIImage imageWithContentsOfFile:[documentsResourcesPath stringByAppendingPathComponent:@"image.png"]]; 

    // SUCCESS (main bundle) 
    UIImage *image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"image" ofType:@"png"]]; 

    // SUCCESS (main bundle) 
    UIImage *image = [UIImage imageNamed:@"image"]; 

답변

0

나는 imageWithContentsOfFile: 메서드가 파일 이름을 분석하지 않는다고 확신합니다. 번들에 포함되지 않은 @ 2x 이미지를로드하려고 할 때도 iPhone에서 같은 문제가 발생했습니다. 결국 나는 축척을 올바르게 설정할 수 있도록 initWithCGImage:scale:orientation:을 사용해야했습니다. 이를 기반으로 접미어 ~ipad을 처리 할 수 ​​있다면 놀랄 것입니다.

+0

위의 내용이 현재 사실 인 것 같습니다. 나는 캐시 디렉토리의 파일들에 대한 파일 이름들 (~ ipad, ~ iphone, @ 2x ~ ipad, @ 2x ~ iphone)에 대한 내 자신의 점검을 끝내었다. –