iPhone 6 Plus 해상도 혼동 : Xcode 또는 Apple 웹 사이트? 개발을 위해


265

애플의 웹 사이트는 해상도가 1080p라고 주장합니다 : 1920 x 1080

그러나 Xcode (오늘 출시 된 8.0 GM)에 필요한 시작 화면은 2208 x 1242입니다.

누가 옳아?

Xcode


iPhone 6+의 실행 이미지는 1242x2208 및 2208x1242 여야합니다. 적어도 이것은 시뮬레이터에서 앱이 올바르게 작동하도록합니다 (HIG에 문서화되어 있음). 왜 이것이 실제 화면 크기 1920x1080과 다른지 알지 못했습니다.
rmaddy

2
매우 이상한 불일치.
JasonGenX


안정적인 버전의 Xcode 6.1에서 변경 될 수 있습니다. 그렇습니까?
Jayprakash Dubey 2009

3
Andreas의 링크를 업데이트하려면 "iPhone 해상도에 대한 최고의 안내서" paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions
David James

답변:


308

iPhone 6+ 는 2208 × 1242 의 가상 해상도 ( 736x414 포인트) 에서 @ 3x 자산을 사용하여 내부적으로 렌더링 한 다음 아래로 샘플링하여 표시합니다. Retina MacBook에서 확장 해상도를 사용하는 것과 동일합니다. 예를 들어 12pt 텍스트가 화면에서 같은 크기로 표시되는 동안 픽셀 자산에 여러 배의 적중률을 적용 할 수 있습니다.

예, 시작 화면은 그 크기 여야합니다.

수학 :

6, 5, 5, 4 및 4는 모두 인치당 326 픽셀이며 @ 2x 자산을 사용하여 이전의 모든 장치의 인치당 약 160 포인트를 유지합니다.

6+는 인치당 401 픽셀입니다. 따라서 대략 @ 2.46x 자산이 필요합니다. 대신 Apple은 @ 3x 자산을 사용하고 전체 출력을 자연 크기의 약 84 %로 줄입니다.

실제로, 애플은 87 %와 비슷한 수준으로 1080을 1242로 전환하기로 결정했습니다. 의심 할 여지없이 양 방향으로 완전한 크기를 생산하는 84 %에 가까운 것을 발견했습니다. 1242/1080 = 2208/1920 반면 1080을 1286으로 바꾼 경우 어떻게 든 2286.22 픽셀을 세로로 렌더링하여 잘 확장해야합니다.


6
어떻게 계산 했습니까? ""가상 해상도 2208 × 1242 (736x414 포인트) "와이"대략 @ 2.46x 자산이 필요합니다 "UIScreen mainScreen] .bounds.size.height는 6+ 이상으로 어떻게 반환됩니까? 568, 568 * 3 (1704) 또는 1920.
msk

1
아마도 발사 이미지에 대한이 답변에 메모를 추가 하시겠습니까? 기존 앱 업그레이드하는 염두에 곰에 유용한 (한스의 답변을 참조) (그렇지 않으면 320x576에서 실행 @ 배 - 나는 잠시 혼란스러워했다!)
조셉 Humfrey

2
@msk [UIScreen mainScreen].bounds.size.height는 세로로있을 때 iPhone 6 이상 시뮬레이터에서 736을 반환합니다. 이것은 2208 값을 3의 스케일로 나눈 값입니다. 너비는 414입니다.
rmaddy

1
해상도가 1242 * 2208 인 @ 3x와 정확히 같은 크기는 아니며 6 % 스트레치입니다.
Binarian

4
참 끔찍한 멍청이! 일부 API 수준 크기 조정을 약간 더 간단하게하기 위해 시스템 전체의 성능 및 메모리 손실 및 선명도를 줄였습니다! . 그럼 나는 모든 메이크업의 의미가 아이폰 7 해제 플러스 5.5 "461 PPI 디스플레이를 할 때 생각
SUP

114

정답은 오래된 앱이 2208 x 1242 확대 모드에서 실행된다는 것입니다. 그러나 앱이 새로운 휴대폰 용으로 제작 된 경우 사용 가능한 해상도는 Super Retina HD 5.8 (iPhone X) 1125 x 2436 (458ppi) , Retina HD 5.5 ( iPhone 6, 7, 8 Plus ) 1242 x 2208Retina HD 4.7 ( 아이폰 6 ) 750 x 1334 . 이것은 질문에 언급 된 혼란을 야기합니다. 새 전화의 전체 화면 크기를 사용하는 앱을 빌드하려면 1125 x 2436, 1242 x 2208, 2208 x 1242 및 750 x 1334 크기의 LaunchImages를 추가하십시오.

새로운 iPhone 11, 11 Pro, 11 Pro Max에 맞게 업데이트되었습니다.

대 면적 아이폰 11 프로 맥스@ 3X : 스케일링, 공간 좌표 414 X 896 포인트 및 1242 X 2688 픽셀, 458 PPI, 장치의 물리적 크기가 3.06에서 6.22 X 77.8 X 158.0 mm이다. 6.5 "Super Retina XDR 디스플레이.

대한 크기 의 아이폰 (11) 프로@ 배 : 스케일링, 공간 좌표 375 X 812 포인트 1,125 X 2,436 픽셀, 458 PPI, 장치의 물리적 크기는 2.81의 x 5.67 나 71.4 X 144.0 mm입니다. 5.8 "Super Retina XDR 디스플레이.

대 면적 의 아이폰 (11)@ 배 스케일링, 공간 좌표 : 414 X 896 포인트 및 828 X 1792 픽셀, 326 PPI, 장치의 물리적 크기가 2.98에서 5.94 X 또는 X 75.7 150.9 mm이다. 6.1 "Liquid Retina HD 디스플레이.

대한 크기 아이폰 X🅂 맥스@ 배 스케일링 (애플 이름 : 슈퍼 망막 HD 6.5 디스플레이 " ), 공간 좌표 414 X 896 포인트 1,242 X 2,688 픽셀, 458 PPI, 장치의 물리적 크기에 3.05 X 6.20 77.4 X 157.5입니다 mm.

let screen = UIScreen.main
print("Screen bounds: \(screen.bounds), Screen resolution: \(screen.nativeBounds), scale: \(screen.scale)")
//iPhone X🅂 Max Screen bounds: (0.0, 0.0, 414.0, 896.0), Screen resolution: (0.0, 0.0, 1242.0, 2688.0), scale: 3.0

대 면적 아이폰 X🅁@ 배 배율 (애플 상품명 : 슈퍼 망막 HD 6.1 "디스플레이 ), 공간 좌표 414 X 896 포인트 및 828 X 1792 픽셀, 326 PPI, 장치의 물리적 크기에 2.98 X 5.94 또는 75.7 X 150.9 mm 인을 .

let screen = UIScreen.main
print("Screen bounds: \(screen.bounds), Screen resolution: \(screen.nativeBounds), scale: \(screen.scale)")
//iPhone X🅁 Screen bounds: (0.0, 0.0, 414.0, 896.0), Screen resolution: (0.0, 0.0, 828.0, 1792.0), scale: 2.0

대한 크기 아이폰 X🅂아이폰 X@ 배 스케일링 (애플 이름 : 슈퍼 망막 HD 5.8 "디스플레이 ), 공간 좌표 375 X 812 포인트 1,125 X 2,436 픽셀, 458 PPI, 장치의 물리적 크기는 2.79의 x 5.65 또는 70.9입니다 x 143.6 mm.

let screen = UIScreen.main
print("Screen bounds: \(screen.bounds), Screen resolution: \(screen.nativeBounds), scale: \(screen.scale)")
//iPhone X🅂 and X Screen bounds: (0.0, 0.0, 375.0, 812.0), Screen resolution: (0.0, 0.0, 1125.0, 2436.0), scale: 3.0

여기에 이미지 설명을 입력하십시오

대 면적 아이폰 6, 6S, 7 및 8@ 배 배율 (애플 상품명 : 망막 HD 5.5 ), 공간 좌표 414 X 736 포인트 및 1242 X 2208 픽셀, 401 PPI, 화면의 물리적 크기가 2.7 X 4.8 인 68 X를 122mm . 확대 모드에서 실행하는 경우 (예 : 새로운 LaunchImages가 없거나 iPhone 6 Plus의 설정에서 선택한 경우) 기본 배율은 2.88이고 화면은 320 x 568 포인트이며 iPhone 5 기본 크기입니다.

Screen bounds: {{0, 0}, {414, 736}}, Screen resolution: <UIScreen: 0x7f97fad330b0; bounds = {{0, 0}, {414, 736}};
mode = <UIScreenMode: 0x7f97fae1ce00; size = 1242.000000 x 2208.000000>>, scale: 3.000000, nativeScale: 3.000000

대한 크기 아이폰 6아이폰 6S : @ 배 배율 (애플 이름으로 망막 HD 4.7 , 좌표 공간) : 375 X 667 점, 750 X 1334 픽셀, 326 PPI, 화면의 실제 크기는 2.3 X 4.1입니다 58 X 104mm . 확대 모드에서 실행하는 경우, 즉 새로운 LaunchImages가없는 경우 화면은 320 x 568 포인트이며 iPhone 5 기본 크기입니다.

Screen bounds: {{0, 0}, {375, 667}}, Screen resolution: <UIScreen: 0x7fa01b5182d0; bounds = {{0, 0}, {375, 667}};
mode = <UIScreenMode: 0x7fa01b711760; size = 750.000000 x 1334.000000>>, scale: 2.000000, nativeScale: 2.000000

그리고 비교를 위해 iPhone 5 는 640 x 1136, iPhone 4 640 x 960입니다.


이 코드를 확인하는 데 사용한 코드는 다음과 같습니다 (nativeScale은 iOS 8에서만 실행 됨).

UIScreen *mainScreen = [UIScreen mainScreen];
NSLog(@"Screen bounds: %@, Screen resolution: %@, scale: %f, nativeScale: %f",
          NSStringFromCGRect(mainScreen.bounds), mainScreen.coordinateSpace, mainScreen.scale, mainScreen.nativeScale);

참고 : LaunchImages를 업로드하지 않으면 앱이 확대 모드로 실행되고 올바른 배율 또는 화면 크기가 표시되지 않습니다. 확대 된 모드에서 nativeScalescale동일하지 않습니다. 실제 장치에서는 iPhone 6 Plus에서 확대 / 축소 모드로 실행되지 않는 경우에도 배율이 2.608이 될 수 있지만 시뮬레이터에서 실행하면 배율이 3.0으로 표시됩니다.

iPhone 6 및 6 Plus 비교


3
새로운 시작 이미지 버전을 추가하지 않은 것 같습니다. 그렇기 때문에 앱이 "호환 모드"에서 실행되고 화면 경계가 두 장치 모두에서 이전 320x576입니다.
Daniel Rinser

3
새로운 시작 이미지 크기를 추가하자마자 올바른 (논리적) 화면 바운드 크기 (iPhone 6의 경우 375x667, 6+의 경우 414x736)가 나타납니다.
Daniel Rinser

1
@DanielRinser 감사합니다. 나는 그것을 시도 할 것이다.
Sverrisson

@DanielRinser 시작 이미지에 입력 해 주셔서 감사합니다. 입력하신 내용에 따라 답변을 업데이트했습니다.
스 베리 슨

그리고 iPhone 4의 자산은 어떻습니까? 슬롯이없는 경우 이름을 어떻게 지정하고 자산 카탈로그에 올리는 방법은 무엇입니까? 자산 카탈로그에는 iPhone 이미지 용 슬롯 1 개, 1 개, 2 개 및 3 개가 있습니다. 2x 및 3x가 iPhone 6 및 6+ 자산 용이라면 iPhone 4 자산을 1x에 넣습니까? 나는 그렇게 생각하지 않습니다.
Duck

96

실제 / 물리적 iPhone 6 Plus 해상도는 1920x1080이지만 Xcode에서는 인터페이스를 2208x1242 해상도 (736x414 포인트)로 설정하고 장치에서는 1920x1080 픽셀로 자동 축소됩니다.

아이폰 해상도 빠른 참조 :

Device          Points    Pixels     Scale  Physical Pixels   PPI   Ratio   Size
iPhone XS Max   896x414   2688x1242  3x     2688x1242         458   19.5:9  6.5"
iPhone XR       896x414   1792x828   2x     1792x828          326   19.5:9  6.1"
iPhone X        812x375   2436x1125  3x     2436x1125         458   19.5:9  5.8"
iPhone 6 Plus   736x414   2208x1242  3x     1920x1080         401   16:9    5.5"
iPhone 6        667x375   1334x750   2x     1334x750          326   16:9    4.7"
iPhone 5        568x320   1136x640   2x     1136x640          326   16:9    4.0"
iPhone 4        480x320   960x640    2x     960x640           326   3:2     3.5"
iPhone 3GS      480x320   480x320    1x     480x320           163   3:2     3.5"

아이폰 해상도


3
아름답고 간단한 답장. 고마워 레 sz
SJ Lim

46

iOS 8에서 실행 이미지 사용을 중지하고 스토리 보드 또는 nib / xib를 사용해야합니다.

  • 에서 엑스 코드 (6) 열기 File메뉴를 선택 NewFile...iOSUser InterfaceLaunch Screen.

  • 그런 다음 프로젝트를 클릭하여 설정 을여십시오.

  • 에서 General탭,라는 부분에서 App Icons and Launch Images의 설정 Launch Screen File방금 만든 파일 (이 설정됩니다에 UILaunchStoryboardNameinfo.plist).

당분간 시뮬레이터에는 검은 색 화면 만 표시되므로 실제 장치 에서 테스트 해야합니다 .

프로젝트에 Launch Screen xib 파일 추가하기 :

새로운 시작 화면 xib 파일 추가

자산 카탈로그 대신 실행 화면 xib 파일을 사용하도록 프로젝트 구성 :

Launch Screen xob을 사용하도록 프로젝트 구성


1
거의 완벽한 지침이지만 File-> NEW-> File ... etc이어야합니다. 두 번째 파일을 찾는 데 시간이 걸렸습니다 :) 감사합니다!

이것들을 어떻게 멋지게 보이게합니까? 이미지를 올리려고 할 때 이미지가 매우 뜨겁습니다.
badweasel

이미지 만 표시하지 않고로드 할 UI를 표시하려는 경우 스토리 보드에 있는지 여부에 관계없이 이미지가 여전히 적절한 크기 여야하므로 좋은 아이디어입니다. 마찬가지로 코드로 이미지를 그릴 수 있다면 내가 생각했던 라운드를 얻을 수 있습니다.
AppHandwerker

시작 xib가 이전 버전과 호환되지 않기 때문에 iOS 8 이전의 것을 지원하는 경우 여전히 이미지 파일을 제공해야합니다.
Mark Bridges

24

물리적 장치에서 iPhone 6 Plus의 기본 화면 경계는 2208x1242 이고 nativeBounds는 1920x1080 입니다. 실제 디스플레이의 크기를 조정하기 위해 하드웨어 스케일링이 있습니다.

시뮬레이터에서 iPhone 6 Plus의 기본 화면 경계와 nativeBounds는 모두 2208x1242입니다.

다시 말하면 ... 비디오, OpenGL 및 CALayers픽셀을 다루는 다른 것들은 장치 의 실제 1920x1080 프레임 버퍼 (또는 sim의 경우 2208x1242 )를 처리합니다. 포인트를 다루는 UIKit것은 2208x1242 (x3) 범위를 처리하고 장치에 따라 적절하게 조정됩니다.

시뮬레이터는 장치에서 스케일링을 수행하는 동일한 하드웨어에 액세스 할 수 없으며 하드웨어와 다른 결과를 생성하므로 소프트웨어에서 시뮬레이션 할 때 큰 이점이 없습니다. 따라서 nativeBounds시뮬레이션 된 장치의 기본 화면을 실제 장치의 기본 화면 경계 로 설정하는 것이 좋습니다 .

iOS 8은 UIScreen( nativeScalenativeBounds) 에 API를 추가 하여 개발자가에 CADisplay해당하는 해상도를 결정할 수 있도록했습니다 UIScreen.


13

레거시 앱이 어떻게 처리되는지 궁금해하는 사람들을 위해 주제에 대해 약간의 테스트와 계산을 수행했습니다.

@ hannes-sverrisson 힌트 덕분에 레거시 앱은 iPhone 6 및 iPhone 6 plus에서 320x568보기로 처리된다는 가정을 시작했습니다.

테스트는 bg@2x.png흰색 테두리 가있는 단순한 검정색 배경으로 이루어졌습니다 . 배경의 크기는 640x1136 픽셀이며 안쪽 흰색 테두리가 1 픽셀 인 검은 색입니다.

아래는 시뮬레이터가 제공 한 스크린 샷입니다.

iPhone 6 스크린 샷에서 흰색 테두리의 위쪽과 아래쪽에는 1 픽셀의 여백이 있고 iPhone 6 플러스 스크린 샷에는 2 픽셀의 여백이 있습니다. 이는 iPhone 6 plus에서 1242x2208 대신 1242x2204, 750x1334 대신 iPhone 6에서 750x1332 의 사용 공간을 제공합니다 .

죽은 픽셀은 iPhone 5 종횡비를 존중한다고 가정 할 수 있습니다.

iPhone 5               640 / 1136 = 0.5634
iPhone 6 (used)        750 / 1332 = 0.5631
iPhone 6 (real)        750 / 1334 = 0.5622
iPhone 6 plus (used)  1242 / 2204 = 0.5635
iPhone 6 plus (real)  1242 / 2208 = 0.5625

둘째, @ 2x 자원은 iPhone 6 plus (@ 3x 자산이 필요함)뿐만 아니라 iPhone 6에서도 확장 될 것임을 알아야합니다. 보기의 확대에.

그러나 크기와 너비는 동일하지 않습니다. 264x264 @ 2x 리소스로 시도했습니다. 결과가 주어지면 스케일링이 픽셀 / 포인트 비율에 정비례한다고 가정해야합니다.

Device         Width scale             Computed width   Screenshot width
iPhone 5        640 /  640 = 1.0                        264 px
iPhone 6        750 /  640 = 1.171875  309.375          309 px
iPhone 6 plus  1242 /  640 = 1.940625  512.325          512 px

Device         Height scale            Computed height  Screenshot height
iPhone 5       1136 / 1136 = 1.0                        264 px
iPhone 6       1332 / 1136 = 1.172535  309.549          310 px
iPhone 6 plus  2204 / 1136 = 1.940141  512.197          512 px

iPhone 6 크기 조절은 너비와 높이가 동일하지 않습니다 (309x310). 이것은 스케일링이 너비와 높이에 비례하지 않고 픽셀 / 포인트 비율을 사용한다는 위의 이론을 확인하는 경향이 있습니다.

이게 도움이 되길 바란다.


12

이 인포 그래픽을 확인하십시오 : http://www.paintcodeapp.com/news/iphone-6-screens-demystified

구형 iPhone, iPhone 6 및 iPhone 6 Plus의 차이점에 대해 설명합니다. 포인트, 렌더링 된 픽셀 및 실제 픽셀의 화면 크기 비교를 볼 수 있습니다. 또한 질문에 대한 답변을 찾을 수 있습니다.

iPhone 6 Plus-Retina 디스플레이 HD 스케일링 계수는 3이며 이후 이미지는 렌더링 된 2208 × 1242 픽셀에서 1920 × 1080 픽셀로 축소됩니다.

다운 스케일링 비율은 1920/2208 = 1080/1242 = 20/23입니다. 즉, 원래 렌더에서 23 픽셀마다 20 개의 물리적 픽셀에 매핑되어야합니다. 다시 말해 이미지는 원래 크기의 약 87 %로 축소됩니다.

최신 정보:

위에서 언급 한 인포 그래픽의 업데이트 된 버전이 있습니다. 화면 해상도 차이에 대한 자세한 정보가 포함되어 있으며 지금까지 4 인치 장치를 포함한 모든 iPhone 모델에 적용됩니다.

http://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions


따라서 앤티 앨리어싱을 해제 한 경우에도 다운 스케일링에서 진행되는 선택적인 앤티 앨리어싱이 있습니까?
Sam

인포 그래픽에 4 인치 스크린이 포함되어 있다면 멋 졌을 것입니다.
Rajesh

@ Rajesh 내 답변을 업데이트했습니다. 지금 4 인치 장치에 대한 정보를 확인하십시오.
Darrarski

4

내가 일반적으로 John Gruber의 Daring Fireball 블로그의 분위기를 좋아하지 않더라도 그의 더 큰 iPhone Display 추측 은 읽을만한 가치가 있습니다.

그는 애플이 더 작은 해상도의 물리적 디스플레이를 구축하고 축소하는 것을 기대하지 않았다는 점을 제외하고는 두 모델 모두 포인트와 픽셀 단위의 해상도를 정확하게 추측 했습니다 (세부 사항은 @Tommy의 답변입니다).

요점은 픽셀 측면에서 생각을 멈추고 포인트 측면에서 생각하기 시작해야한다는 것입니다 (이것은 꽤 오랜 시간 이었지만 최근 발명이 아닙니다) .UI 요소의 물리적 크기. 요컨대, 물리적으로 대부분의 요소가 동일한 크기를 유지하기 때문에 두 가지 새로운 iPhone 모델이 향상됩니다. 화면에 더 많이 넣을 수 있습니다 (각 큰 화면마다 더 맞을 수 있음).

나는 그들이 더 큰 모델을 위해 내부 해상도를 실제 화면 해상도 1 : 1로 매핑하지 않았다는 것에 약간 실망했다.


우리는 포인트로 생각하지만 불행히도 Photoshop에서 픽셀 단위로 이미지를 만들어야합니다 ... 😃
Duck

2
픽셀은 많은 이유로 많은 사람들에게 중요합니다. 애플은이 주제에 대해 스스로의 생각을하는 반면, iOS8에 아주 좋은 이유로 [UIScreen nativeBounds]를 추가했다.
ctpenrose

예, 픽셀도 중요하지만 이미지 (스플래쉬 스크린 등)와 같은 정적 자산에는 중요합니다. 내 요점 (말장난 의도)은 응용 프로그램 화면의 레이아웃, 동적으로 그려진 것입니다.
rawpower
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.