iPhone 6 Plusの解像度の混乱:XcodeまたはAppleのWebサイト?開発用


265

Appleのウェブサイトによると、解像度は1080p:1920 x 1080です。

ただし、Xcodeで必要な起動画面(本日8.0 GMが起動)は2208 x 1242です。

誰が正しいのですか?

Xcode


iPhone 6以降の起動画像は、1242x2208および2208x1242である必要があります。少なくともこれにより、アプリはシミュレータで適切に機能します(これはHIGに文書化されています)。これが、1920x1080の想定される物理画面サイズとなぜ異なるのか、私は理解していません。
rmaddy 2014

2
非常に奇妙な矛盾。
JasonGenX


これは、Xcode 6.1の安定バージョンで変更される可能性があります。それは...ですか?
Jayprakash Dubey 2014

3
Andreasからのリンクを更新するには、「iPhone解像度の究極のガイド」を参照してください。paintcodeapp.com/news/ultimate
David James

回答:


308

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ピクセルをレンダリングする必要があります。


6
どのようにしてそれを計算しましたか->「2208×1242の仮想解像度(736x414ポイント)」と、これは「およそ2.46xのアセットが必要です」UIScreen mainScreen] .bounds.size.heightは6+に対して何を返しますか?568、568 * 3(1704)または1920
MSK

1
おそらく、起動画像についてこの回答にメモを追加しますか?(Hannesの回答を参照)アップグレードされる既存のアプリを念頭に置いておくと便利です(そうでない場合、320x576 @ 3xで実行されます-しばらく混乱しました!)
Joseph Humfrey

2
@msk [UIScreen mainScreen].bounds.size.heightは、縦長の場合、iPhone 6+シミュレータで736を返します。これは、幅が414である3のスケールで割った値である2208
rmaddy

1
これは、解像度1242 * 2208の@ 3xと正確に同じサイズではなく、6%ストレッチされています。
Binarian 2014

4
なんて恐ろしいクラッジでしょう!一部のAPIレベルのサイズ調整を少し単純にするために、システム全体でパフォーマンスとメモリとシャープネスが失われます。さて私は、彼らが5.5" 461 ppiのディスプレイとiPhone 7プラスを離したとき、それはすべてのメイクセンスをだろうと思います。
SUP

114

その答えは、古いアプリは2208 x 1242ズームモードで実行されるということです。ただし、新しいスマートフォン向けにアプリを作成した場合、利用可能な解像度は次のとおりです。SuperRetina HD 5.8(iPhone X)1125 x 2436(458ppi)Retina HD 5.5iPhone 6、7、8 Plus1242 x 2208およびRetina HD 4.7iPhone 6750 x 1334。これは、質問で述べた混乱を引き起こしています。新しい電話の全画面サイズを使用するアプリを作成するには、1125 x 2436、1242 x 2208、2208 x 1242、750 x 1334のサイズのLaunchImagesを追加します。

新しいiPhone 11、11 Pro、11 Pro Max用に更新されました

以下のためのサイズ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をアップロードしないと、アプリがズームモードで実行され、正しいスケーリングまたは画面サイズが表示されません。ズームモードでは、nativeScalescaleは同じではありません。実際のデバイスでは、ズームモードで実行していない場合でも、iPhone 6 Plusでスケールが2.608になることがありますが、シミュレーターで実行すると、スケールは3.0と表示されます。

iPhone 6と6 Plusの比較


3
新しい起動イメージバージョンを追加しなかったと思います。これがアプリが「互換モード」で実行され、画面の境界が両方のデバイスで古い320x576である理由です。
ダニエルリンサー2014

3
新しい起動画像サイズを追加するとすぐに、正しい(論理)画面バインドサイズが得られます。iPhone6の場合は375x667、6 +以上の場合は414x736です。
ダニエルリンサー2014

1
@DanielRinserありがとうございます。やってみます。
スベリソン、2014

@DanielRinser起動画像についてのご入力ありがとうございます。ご入力いただいた内容に基づいて回答を更新しました。
スベリソン、2014

そしてiPhone 4用のアセットはどうですか?それらにどのように名前を付け、スロットがない場合にアセットカタログに配置するにはどうすればよいですか?アセットカタログには、iPhoneイメージ用の3つのスロットがあります。1x、2x、3xです。2xおよび3xがiPhone 6および6+アセット用である場合、iPhone 4アセットを1xに配置しますか?そうは思いません。
ダック

96

実際の/物理的な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"

iPhoneの解像度


3
美しくシンプルな返信。Leszekに感謝します。
SJ Lim

46

iOS 8での起動画像の使用を停止し、ストーリーボードまたはnib / xibを使用する必要があります。

  • ではXcodeの6、開いてFileメニューを選択しますNewFile...iOSUser InterfaceLaunch Screen

  • 次に、クリックしてプロジェクトの設定を開きます

  • ではGeneral、タブと呼ばれるセクションでApp Icons and Launch Images、設定Launch Screen File(これが設定されます作成したばかりのファイルにUILaunchStoryboardNameしてinfo.plist)。

当面の間、シミュレータは黒い画面しか表示しないので、実際のデバイスでテストする必要があることに注意してください。

Launch Screen xibファイルをプロジェクトに追加します。

新しいLaunch Screen xibファイルを追加する

アセットカタログの代わりにLaunch Screen xibファイルを使用するようにプロジェクトを構成します。

Launch Screen xobを使用するようにプロジェクトを構成する


1
ほぼ完璧な手順ですが、[ファイル]-> [新規]-> [ファイル...]などになるはずです。2番目のファイルを見つけるのに少し時間がかかりました:)ありがとうございます。
ウィル

これらをどのように見栄えよくするのですか?その上に画像を配置しようとすると、非常に不安定になります。
badweasel 2014

画像を表示するだけでなく、読み込み用のUIを表示したい場合は、ストーリーボードにあるかどうかに関係なく、画像を適切なサイズにする必要があるため、これは良いアイデアです。同様に、コードでイメージを描画できる場合は、私が想定しているように丸めることができます。
AppHandwerker 2014

起動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はAPIをUIScreennativeScaleおよびnativeBounds)に追加し、開発者がにCADisplay対応するの解像度を決定できるようにしましたUIScreen


13

レガシーアプリがどのように扱われるのか疑問に思う私のような人のために、私はこの問題について少しテストと計算を行いました。

@ 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)が同じでないことに注意することが重要です。これは、スケーリングが幅と高さに比例しないが、ピクセル/ポイントの比率を使用するという上記の理論を確認する傾向があります。

これがお役に立てば幸いです。


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 2014

@Rajesh回答を更新しました。4インチデバイスに関する情報を今すぐ確認してください。
Darrarski 2014

4

John GruberのDaring Fireballブログの口調が一般的に気に入らない場合でも、彼のより大きなiPhoneディスプレイ予想は読む価値があります。

彼は推測しましたが、両方のモデルのポイントとピクセルの両方の解像度を正確に理解しましたが、Appleがより小さな解像度の物理ディスプレイを構築して縮小することを期待していませんでした(詳細は@Tommyの回答にあります)。

すべての要点は、ピクセルの観点から考えるのをやめ、ポイント(これはかなり前からのことでしたが、最近の発明ではありません)と結果として生じるUI要素の物理的なサイズの観点から考えるようにすべきです。要するに、物理的にほとんどの要素は同じサイズのままなので、両方の新しいiPhoneモデルがこの点で改善され、画面にそれらをより多く合わせることができます(大きな画面ごとに、より多く合わせることができます)。

より大きなモデルでは、内部解像度の実際の画面解像度へのマッピングを1:1に保っていなかったので、少しがっかりしました。


私たちはポイントで考えますが、残念なことに、Photoshopで画像をピクセルで作成する必要があります... D
Duck

2
ピクセルは多くの理由で私たちの多くにとって重要です。Appleはこのトピックについて独自の考え方でポリシングを行っていますが、非常に正当な理由により、iOS8に[UIScreen nativeBounds]を不本意ながら追加しました。
ctpenrose 2014

ピクセルも重要ですが、画像(スプラッシュスクリーンなど)のような静的なアセットでは重要です。私のポイント(しゃれた意図)は、アプリケーション画面のレイアウトではなく、動的に描画されるものでした。
rawpower 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.