Appleのウェブサイトによると、解像度は1080p:1920 x 1080です。
ただし、Xcodeで必要な起動画面(本日8.0 GMが起動)は2208 x 1242です。
誰が正しいのですか?
Appleのウェブサイトによると、解像度は1080p:1920 x 1080です。
ただし、Xcodeで必要な起動画面(本日8.0 GMが起動)は2208 x 1242です。
誰が正しいのですか?
回答:
iPhone 6+は、@ 3xアセットを使用して、2208×1242の仮想解像度(736x414ポイント)で内部的にレンダリングし、それをサンプリングして表示します。Retina MacBookでスケーリングされた解像度を使用する場合と同じです。これにより、たとえば12 ptのテキストを画面上で同じサイズに見ながら、ピクセルアセットの整数倍を達成できます。
だから、はい、起動画面はそのサイズである必要があります。
6、5、5、4、4はすべて1インチあたり326ピクセルであり、@ 2xアセットを使用して、以前のすべてのデバイスの約160ポイント/インチを維持します。
6+は1インチあたり401ピクセルです。したがって、仮想的には約2.46倍のアセットが必要になります。代わりに、Appleは@ 3xアセットを使用して、完全な出力を自然なサイズの約84%に縮小します。
実際には、Appleは87%程度で行くことを決定し、1080を1242に変えました。84%に可能な限り近いものを見つけて、両方向で整数サイズを生成したことは間違いありません— 1242/1080 = 2208/1920一方、1080をたとえば1286に変更した場合、うまくスケーリングするには、垂直方向に2286.22ピクセルをレンダリングする必要があります。
[UIScreen mainScreen].bounds.size.height
は、縦長の場合、iPhone 6+シミュレータで736を返します。これは、幅が414である3のスケールで割った値である2208
その答えは、古いアプリは2208 x 1242ズームモードで実行されるということです。ただし、新しいスマートフォン向けにアプリを作成した場合、利用可能な解像度は次のとおりです。SuperRetina 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(iPhone 6)750 x 1334。これは、質問で述べた混乱を引き起こしています。新しい電話の全画面サイズを使用するアプリを作成するには、1125 x 2436、1242 x 2208、2208 x 1242、750 x 1334のサイズのLaunchImagesを追加します。
以下のためのサイズiPhone 11プロマックスと@ 3X:スケーリングは、座標空間414 X 896点と1242 X 2688ピクセル、458個のPPI、デバイスの物理的なサイズは、3.06 xの6.22または77.8 X 158.0ミリメートルです。6.5インチSuper Retina XDRディスプレイ。
以下のためのサイズiPhone 11 Proを有する@ 3X:スケーリングは、空間座標375 X 812点と1125 X 2436ピクセル、458 PPI、デバイスの物理的なサイズは、2.81 xの5.67または71.4 X 144.0ミリメートルです。5.8インチSuper Retina XDRディスプレイ。
以下のためのサイズiPhone 11と@ 2Xスケーリングは、空間座標:414 X 896点と828個のx 1792ピクセル、326 PPI、デバイスの物理的なサイズは、2.98 xの5.94または75.7 X 150.9ミリメートルです。6.1インチLiquid Retina HDディスプレイ。
用サイズiPhoneX🅂マックスと@ 3倍のスケーリング(アップル名:スーパー網膜HD 6.5ディスプレイ」)、座標空間:X 896 414がポイントとX 2688 1242ピクセル、458 PPI、デバイスの物理的なサイズは、3.05のx 6.20またはX 157.5 77.4でありますんん。
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
用サイズiPhoneX🅁と@ 2倍スケーリング(アップル名:スーパー網膜HD 6.1"ディスプレイ)、座標空間:X 896 414がポイントとX 1792 828個のピクセル、326 PPI、デバイスの物理的なサイズは、2.98のx 5.94または75.7のx 150.9ミリメートルであります。
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
用サイズiPhoneX🅂やiPhone Xと@ 3倍のスケーリング(アップル名:スーパー網膜HD 5.8"ディスプレイ)、座標空間:X 812 375がポイントと1125 X 2436ピクセル、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
以下のためのサイズiPhone 6、6S、図7および図8と@ 3Xスケーリング(アップル名:網膜HD 5.5)、空間座標:X 736 414点と1242 X 2208ピクセル、401 PPI、画面の物理的サイズは、2.7 X 4.8以上である68 X 122 mm。ズームモードで実行する場合、つまり新しい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
@ 2xスケーリングのiPhone 6およびiPhone 6Sのサイズ(Apple名:Retina HD 4.7)、座標空間:375 x 667ポイント、750 x 1334ピクセル、326 ppi、画面の物理サイズは2.3 x 4.1 インチまたは58 x 104 mmです。ズームモードで実行している場合、つまり新しい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ピクセルに自動的に縮小されます。
iPhone解像度のクイックリファレンス:
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を使用する必要があります。
ではXcodeの6、開いてFile
メニューを選択しますNew
⟶ File...
⟶ iOS
⟶ User Interface
⟶ Launch Screen
。
次に、クリックしてプロジェクトの設定を開きます。
ではGeneral
、タブと呼ばれるセクションでApp Icons and Launch Images
、設定Launch Screen File
(これが設定されます作成したばかりのファイルにUILaunchStoryboardName
してinfo.plist
)。
当面の間、シミュレータは黒い画面しか表示しないので、実際のデバイスでテストする必要があることに注意してください。
Launch Screen xibファイルをプロジェクトに追加します。
アセットカタログの代わりにLaunch Screen xibファイルを使用するようにプロジェクトを構成します。
物理デバイスでは、iPhone 6 Plusのメイン画面の境界は2208x1242で、nativeBoundsは1920x1080です。物理ディスプレイに合わせてサイズを変更するには、ハードウェアのスケーリングが必要です。
シミュレーターでは、iPhone 6 Plusのメイン画面の境界とnativeBoundsはどちらも2208x1242です。
言い換えると、ビデオ、OpenGL、およびCALayers
ピクセルを処理することに基づいたその他のものは、デバイスの実際の1920x1080フレームバッファー(またはsimでは2208x1242)を処理します。内のポイントをUIKit
処理するものは、2208x1242(x3)の境界を処理し、デバイス上で適切にスケーリングされます。
シミュレーターは、デバイスでスケーリングを行っているのと同じハードウェアにアクセスできません。また、ハードウェアとは異なる結果を生成するため、ソフトウェアでシミュレーションすることにはあまりメリットがありません。したがってnativeBounds
、シミュレートされたデバイスのメイン画面のを物理デバイスのメイン画面の境界に設定することには意味があります。
iOS 8はAPIをUIScreen
(nativeScale
およびnativeBounds
)に追加し、開発者がにCADisplay
対応するの解像度を決定できるようにしましたUIScreen
。
レガシーアプリがどのように扱われるのか疑問に思う私のような人のために、私はこの問題について少しテストと計算を行いました。
@ hannes-sverrissonヒントのおかげで、レガシーアプリはiPhone 6およびiPhone 6 plusで320x568のビューで処理されるという想定から始めました。
テストはbg@2x.png
、白い境界線のある単純な黒い背景で行われました。背景のサイズは640x1136ピクセルで、黒で、内側の白い境界線は1ピクセルです。
以下は、シミュレーターによって提供されるスクリーンショットです。
iPhone 6のスクリーンショットでは、白い境界線の上下に1ピクセルのマージンがあり、iPhone 6 plusのスクリーンショットには2ピクセルのマージンがあります。これにより、使用済みスペースは1242x2208の代わりに1242x2204になり、iPhone 6では750x1334ではなく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ディスプレイ予想は読む価値があります。
彼は推測しましたが、両方のモデルのポイントとピクセルの両方の解像度を正確に理解しましたが、Appleがより小さな解像度の物理ディスプレイを構築して縮小することを期待していませんでした(詳細は@Tommyの回答にあります)。
すべての要点は、ピクセルの観点から考えるのをやめ、ポイント(これはかなり前からのことでしたが、最近の発明ではありません)と結果として生じるUI要素の物理的なサイズの観点から考えるようにすべきです。要するに、物理的にほとんどの要素は同じサイズのままなので、両方の新しいiPhoneモデルがこの点で改善され、画面にそれらをより多く合わせることができます(大きな画面ごとに、より多く合わせることができます)。
より大きなモデルでは、内部解像度の実際の画面解像度へのマッピングを1:1に保っていなかったので、少しがっかりしました。