애플의 웹 사이트는 해상도가 1080p라고 주장합니다 : 1920 x 1080
그러나 Xcode (오늘 출시 된 8.0 GM)에 필요한 시작 화면은 2208 x 1242입니다.
누가 옳아?
애플의 웹 사이트는 해상도가 1080p라고 주장합니다 : 1920 x 1080
그러나 Xcode (오늘 출시 된 8.0 GM)에 필요한 시작 화면은 2208 x 1242입니다.
누가 옳아?
답변:
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 픽셀을 세로로 렌더링하여 잘 확장해야합니다.
[UIScreen mainScreen].bounds.size.height
는 세로로있을 때 iPhone 6 이상 시뮬레이터에서 736을 반환합니다. 이것은 2208 값을 3의 스케일로 나눈 값입니다. 너비는 414입니다.
정답은 오래된 앱이 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 2208 및 Retina HD 4.7 ( 아이폰 6 ) 750 x 1334 . 이것은 질문에 언급 된 혼란을 야기합니다. 새 전화의 전체 화면 크기를 사용하는 앱을 빌드하려면 1125 x 2436, 1242 x 2208, 2208 x 1242 및 750 x 1334 크기의 LaunchImages를 추가하십시오.
대 면적 아이폰 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를 업로드하지 않으면 앱이 확대 모드로 실행되고 올바른 배율 또는 화면 크기가 표시되지 않습니다. 확대 된 모드에서 nativeScale
와 scale
동일하지 않습니다. 실제 장치에서는 iPhone 6 Plus에서 확대 / 축소 모드로 실행되지 않는 경우에도 배율이 2.608이 될 수 있지만 시뮬레이터에서 실행하면 배율이 3.0으로 표시됩니다.
실제 / 물리적 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"
iOS 8에서 실행 이미지 사용을 중지하고 스토리 보드 또는 nib / xib를 사용해야합니다.
에서 엑스 코드 (6) 열기 File
메뉴를 선택 New
⟶ File...
⟶ iOS
⟶ User Interface
⟶ Launch Screen
.
그런 다음 프로젝트를 클릭하여 설정 을여십시오.
에서 General
탭,라는 부분에서 App Icons and Launch Images
의 설정 Launch Screen File
방금 만든 파일 (이 설정됩니다에 UILaunchStoryboardName
에 info.plist
).
당분간 시뮬레이터에는 검은 색 화면 만 표시되므로 실제 장치 에서 테스트 해야합니다 .
프로젝트에 Launch Screen xib 파일 추가하기 :
자산 카탈로그 대신 실행 화면 xib 파일을 사용하도록 프로젝트 구성 :
물리적 장치에서 iPhone 6 Plus의 기본 화면 경계는 2208x1242 이고 nativeBounds는 1920x1080 입니다. 실제 디스플레이의 크기를 조정하기 위해 하드웨어 스케일링이 있습니다.
시뮬레이터에서 iPhone 6 Plus의 기본 화면 경계와 nativeBounds는 모두 2208x1242입니다.
다시 말하면 ... 비디오, OpenGL 및 CALayers
픽셀을 다루는 다른 것들은 장치 의 실제 1920x1080 프레임 버퍼 (또는 sim의 경우 2208x1242 )를 처리합니다. 포인트를 다루는 UIKit
것은 2208x1242 (x3) 범위를 처리하고 장치에 따라 적절하게 조정됩니다.
시뮬레이터는 장치에서 스케일링을 수행하는 동일한 하드웨어에 액세스 할 수 없으며 하드웨어와 다른 결과를 생성하므로 소프트웨어에서 시뮬레이션 할 때 큰 이점이 없습니다. 따라서 nativeBounds
시뮬레이션 된 장치의 기본 화면을 실제 장치의 기본 화면 경계 로 설정하는 것이 좋습니다 .
iOS 8은 UIScreen
( nativeScale
및 nativeBounds
) 에 API를 추가 하여 개발자가에 CADisplay
해당하는 해상도를 결정할 수 있도록했습니다 UIScreen
.
레거시 앱이 어떻게 처리되는지 궁금해하는 사람들을 위해 주제에 대해 약간의 테스트와 계산을 수행했습니다.
@ 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). 이것은 스케일링이 너비와 높이에 비례하지 않고 픽셀 / 포인트 비율을 사용한다는 위의 이론을 확인하는 경향이 있습니다.
이게 도움이 되길 바란다.
이 인포 그래픽을 확인하십시오 : 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
내가 일반적으로 John Gruber의 Daring Fireball 블로그의 분위기를 좋아하지 않더라도 그의 더 큰 iPhone Display 추측 은 읽을만한 가치가 있습니다.
그는 애플이 더 작은 해상도의 물리적 디스플레이를 구축하고 축소하는 것을 기대하지 않았다는 점을 제외하고는 두 모델 모두 포인트와 픽셀 단위의 해상도를 정확하게 추측 했습니다 (세부 사항은 @Tommy의 답변입니다).
요점은 픽셀 측면에서 생각을 멈추고 포인트 측면에서 생각하기 시작해야한다는 것입니다 (이것은 꽤 오랜 시간 이었지만 최근 발명이 아닙니다) .UI 요소의 물리적 크기. 요컨대, 물리적으로 대부분의 요소가 동일한 크기를 유지하기 때문에 두 가지 새로운 iPhone 모델이 향상됩니다. 화면에 더 많이 넣을 수 있습니다 (각 큰 화면마다 더 맞을 수 있음).
나는 그들이 더 큰 모델을 위해 내부 해상도를 실제 화면 해상도 1 : 1로 매핑하지 않았다는 것에 약간 실망했다.