2013-04-29 12 views
0

프로젝트에서 "flipImage.png"및 "[email protected]"파일 은 모두입니다. 에서 - [FlipsideViewController viewDidLoad] 나는 다음과 같은 코드가 있습니다. 정신병 체크 (다른 stackoverflowers 덕분에) 정확하게 망막 또는 아니오를보고합니다. 그러나 두 경우 모두 적재 된 이미지는 작은 것이고 높이로 확인됩니다. 왜 이미지가 자동으로로드되지 않습니까? 좋습니다, 대안을 볼 수는 있지만 가능한 경우 시스템을 사용하고 싶습니다.iOS 6.1 Xcode 4.6 - imageNamed는 @ 2x 버전을 반환하지 않습니다

UIImage* flipimage = [UIImage imageNamed:@"flipImage.png"]; 
NSLog(@"Image height = %f", flipimage.size.height); // always 416, never 832 :(

// Sanity check. 
if ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] && 
([UIScreen mainScreen].scale == 2.0)) { 
    NSLog(@"Retina"); 
} else { 
    NSLog(@"Non-retina"); 
} 

답변

1

iOS 망막 디스플레이는 그렇게 작동하지 않습니다. @ 2 배 이미지와 표준 해상도 이미지의 높이가 기기와 코드에서 동일합니다. 화면에 416 포인트 x 416 포인트의 이미지를 만들면 레티 나 디스플레이 대 비 망막 디스플레이에 있기 때문에 높이가 변하지 않습니다.

차이점은 @ 2x 이미지가 더 높은 해상도를 갖기 때문에 당 더 많은 픽셀을 보여 주며 이는 망막 디스플레이가 픽셀 대신에 사용하는 것입니다.

기본적으로 앱에서 사용하는 이미지에 표준 해상도 파일명을 사용하면 OS가 망원 디스플레이에있는 경우 자동으로 고해상도 이미지로 바꾸어줍니다.

+0

감사합니다. 분명히 이미지의 "크기"를 확인하면 어떤 파일이로드되었는지 정확히 알려주지 않습니다. 사실, 옳은 일이 끝났습니다. 진화하는 모델과 LOGICAL 크기 (픽셀)와 DISPLAY 크기 (점?)의 차이점을 더 연구해야합니다. 이것은 종횡비 투쟁을 연상 시키는데, 나는 한때 서사시적인 말투로 http://www.andrewduncan.ws/aspect에서 분류했다. 후르푸! –

+0

@AndrewDuncan 실제로 UIImage에 이미지가로드되면 크기를 확인하는 것과 관계없이 어쨌든 파일을 인스턴스화하는 데 사용 된 파일을 알 수 없습니다. 내 대답이 도움이 되었다면 확인하십시오. 그 옆에있는 체크 표시는이 질문을 닫을 것입니다. – iwasrobbed

+0

논리적 포인트가 아닌 물리적 포인트의 크기를 알고 싶다면 UIImage에서 참조 된 CGImage에 문의하십시오. UIImage는 CGImage를 둘러싼 포장지입니다. @ 2x 이미지가 2와 같을 경우 대개 망막 디스플레이에서 그의 스케일에 대해 UIImage에 요청할 수 있습니다. – Andrea

0

이전 의견에 따라 ... 그리고 코드를 많이 변경하지 않고, 왜 당신은이 작업을 수행하지 않습니다 * 수를 당신에게 점의 크기 (숫자를 반환해야

UIImage* flipimage = [UIImage imageNamed:@"flipImage.png"]; 
NSLog(@"Image height = %f", flipimage.size.height * [UIScreen mainScreen].scale); 

포인트 당 픽셀 수).