2012-01-27 2 views
2

iOS에 파일 이미지 파일의 2x 버전을 수동으로로드하려고합니다. 리소스 절약을 위해이 작업을하고 있습니다. iPhone 버전의 그래픽이 필요합니다. iPad 버전의 경우 1 : 1 비율로 사용하고 싶습니다.iPad에서 x2 버전의 이미지를 강제로드 할 때 이미지가 흐리게 표시됩니다.

이렇게하려면 initWithContentsOfFile을 사용할 수 없습니다. iOS가 x2를 파일 이름에 추가하더라도 x1 버전을 제공하기 때문입니다. 대신이 코드를 사용합니다.

NSString *filename = [myImage filenameWithSuffix:@"@2x"]; 
UIImage *image = [[UIImage alloc] initWithCGImage:[[UIImage imageWithData:[NSData dataWithContentsOfFile:filename]] CGImage] 
              scale:1.0 
             orientation:UIImageOrientationUp]; 

UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 

그래도 작동합니다. 저는 그것이 x2 버전을 포착하고 있는지 100 % 확신합니다 (확실히 그 그래픽을 변경했습니다).

그러나 화면에 표시 될 때 정확한 크기로 흐리게 표시됩니다. 사실 x1 버전이 200 %까지 날려 버린 것처럼 보입니다. 따라서 iOS는 내 이미지에 이상한 일을하고 있습니다.

픽셀 경계에서 이미지를 그려야합니다.

UPDATE :

내가 X2 접미사없이 다른 이미지 파일을 생성하고로드 initWithContentsOfFile를 사용하더라도, 그것은 여전히 ​​흐려입니다. 따라서 이것은로드되는 것과는 아무런 관련이 없습니다.

픽셀 정렬 이외에 이미지가 왜곡 될 수 있습니까?

나는 스크린 샷을 찍었고 Photoshop에서 원본 이미지와 비교했다는 점에 유의하십시오. 정확히 같은 크기이므로 스케일링은 문제가 아닙니다.

+0

규모를 지정하지 않아도됩니다. 정상적인 이름을 사용하고 OS가 "@ 2x"를 잡으려고 했습니까? –

+0

이것은 x2 측면과 아무 관련이 없습니다. 자세한 내용은 내 업데이트를 참조하십시오. – tarmes

답변

1

이 문제를 해결했으며 픽셀 맞춤 때문이라고 당혹 스럽습니다.

iOS 시뮬레이터가 잘못 정렬 된 이미지를 강조 할 수 있다는 것을 알았습니다. 이미지가 실제로 정렬되지 않았 음이 증명되었습니다. 그런 다음 문제를 일으킨 이미지를 찾기 위해 이미지의 모든보기 위치를 위쪽으로 기록했습니다. 이 조각은 금 여러 번에 무게를 증명 :

내가 본 것을, 당신이, 정상 및 "@ 2 배"두 이미지를 했어야되고, OS는 화면 해상도에 따라의 이미지를 넣어에서
NSLog(@"View details"); 
    UIView *view = theImageView; 
    while (view) 
    { 
     NSLog(@"%@", view); 
     view = [view superview]; 
    } 
1

이 어둠 속에서 바로 기회입니다,하지만 난 사용하여 아이 패드에 단지 벌금 @ 2 배 이미지를로드 할 수 있었다 2.

NSString *filename = [myImage filenameWithSuffix:@"@2x"]; 
UIImage *image = [[UIImage alloc] initWithCGImage:[[UIImage imageWithData:[NSData dataWithContentsOfFile:filename]] CGImage] 
              scale:2.0 
             orientation:UIImageOrientationUp]; 

UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 

에 init 메소드에 규모를 변경해보십시오 이 :

UIImage *image = [UIImage imageNamed:@"[email protected]"]; 
UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 
[imageView sizeToFit]; 
[self.view addSubview:imageView]; 

(I는 imageNamed을 사용하고, 이미지는이 방법에 의해 가정 때문에 파일명 .PNG에 추가하지 않았다하는 .PNG 이었기 때문에)

+0

시도해 보니 잘못된 크기를 그려야합니다. – tarmes

+0

그렇다면 신경 쓰지 마라. – Kevin

관련 문제