web-dev-qa-db-ja.com

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

アップルのWebサイトによると、解像度は1080p:1920 x 1080です。

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

誰が正しいですか?

Xcode

265
JasonGenX

IPhone 6+は内部的に @ 3x アセットを使用して 2208×1242 の仮想解像度( 736x414 points)でレンダリングし、それをサンプリングして表示します。 Retina MacBookでスケーリングされた解像度を使うのと同じです。 12ポイントのテキストは画面上で同じサイズに見えます。

だから、はい、起動画面はそのサイズである必要があります。

数学:

6、5、5、4、4はすべて1インチあたり326ピクセルであり、以前のすべてのデバイスの1インチあたり約160ポイントを維持するために2倍のアセットを使用します。

6+は1インチあたり401ピクセルです。そのため、仮想的には2.46倍の資産が必要になります。その代わりに、Appleは@ 3倍のアセットを使用し、完全な出力をその本来のサイズの約84%に縮小します。

実際には、Appleはもっと多くの87%を使って1080を1242にすることに決めました。それは、可能な限り84%に近いものを見つけることで、それでも両方向に整数サイズを生み出しました - 1242/1080 = 2208/1920一方、1080を1286などに変換した場合、2286.22ピクセルを垂直方向にレンダリングして拡大縮小する必要があります。

308
Tommy

その答えは、古いアプリは2208 x 1242ズームモードで実行されることです。しかし、アプリが新しい携帯電話用に構築されている場合、使用可能な解像度は次のとおりです。 スーパーRetina HD 5.8(iPhone X)1125 x 2436(458ppi)Retina HD 5.5iPhone 6、7、8)プラス1242 x 2208 and Retina HD 4.7iPhone 6750 x 1334 これは質問で言及された混乱を引き起こしています。新しい携帯電話のフルスクリーンサイズを使用するアプリを作成するには、LaunchImagesを1125 x 2436、1242 x 2208、2208 x 1242、および750 x 1334のサイズで追加します。

新しいiPhone X ????、X ????用に更新とX ????マックス

iPhone X ???? Max のサイズ @ 3x スケーリング(Apple名: Super Retina HD 6.5ディスプレイ " )、座標スペース: 414 x 896 ポイント 1242 x 2688 ピクセル、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

iPhone X ???? のサイズ @ 2x スケール(Apple名: Super Retina HD 6.1 "display )、座標スペース: 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

iPhone X ???? および iPhone X@ 3x スケーリング付き(Apple名: Super Retina HD 5.8 "display )、座標空間: 375 x 812 ポイントおよび 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

enter image description here

iPhone 6、6S、7、および8 のサイズ @ 3x スケーリング(Apple名: Retina HD 5.5 )、座標スペース: 414 x 736 ポイントおよび 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

iPhone 6 および iPhone 6S 2倍の拡大縮小率(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は同じになりません。 実際のデバイスでは、スケールは2.608になります。 iPhone 6 Plusは、ズームモードでは動作していなくても、シミュレータ上で動作しているときは3.0のスケールで表示されます。

Comparing iPhone 6 and 6 Plus

113

実際の/物理的なiPhone 6 Plusの解像度は1920x1080ですが、Xcodeではあなたは2208x1242解像度(736x414ポイント)のためにあなたのインターフェースを作ります、そして、デバイス上でそれは自動的に1920x1080ピクセルに縮小されます。

iPhoneの解像度のクイックリファレンス:

Device          Points    Pixels     Scale  Physical Pixels   Physical PPI  Size
iPhone X        812x375   2436x1125  3x     2436x1125         458           5.8"
iPhone 6 Plus   736x414   2208x1242  3x     1920x1080         401           5.5"
iPhone 6        667x375   1334x750   2x     1334x750          326           4.7"
iPhone 5        568x320   1136x640   2x     1136x640          326           4.0"
iPhone 4        480x320   960x640    2x     960x640           326           3.5"
iPhone 3GS      480x320   480x320    1x     480x320           163           3.5"

iPhone resolutions

96
Leszek Szary

おそらくiOS 8で起動画像を使うのをやめてストーリーボードかnib/xibを使うべきです。

  • Xcode 6 で、Fileメニューを開き、NewFile...iOSUser InterfaceLaunch Screenの順に選択します。

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

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

当面の間、シミュレータは黒い画面しか表示しないので、 実際のデバイスでテストする必要があります

プロジェクトに起動画面xibファイルを追加します。

Adding a new Launch Screen xib file

Asset Catalogの代わりにLaunch Screen xibファイルを使用するようにプロジェクトを設定します。

Configure project to use Launch Screen xob

46
davidisdk

物理デバイスでは、iPhone 6 Plusのメイン画面の境界は 2208 x 1242 で、nativeBoundsは 1920 x 1080 です。物理的なディスプレイに合わせてサイズを変更するには、ハードウェアのスケーリングが必要です。

シミュレータでは、iPhone 6 Plusのメイン画面の境界とnativeBoundsはどちらも2208 x 1242です。

言い換えれば、...ビデオ、OpenGL、およびピクセルを扱うCALayersに基づくその他のものは、デバイス上の実際の 1920x1080 フレームバッファ(または 2208x1242 sim) UIKit内の点を扱うものは 2208x1242 (x3)の範囲を扱い、デバイス上で適切に拡大縮小されます。

シミュレータは、デバイスのスケーリングを行っているのと同じハードウェアにアクセスすることはできません。また、ハードウェアとは異なる結果が得られるため、ソフトウェアでシミュレートしてもあまり利点はありません。したがって、シミュレートされたデバイスのメイン画面のnativeBoundsを、物理デバイスのメイン画面の境界に設定することは理にかなっています。

iOS 8では、開発者がUIScreenに対応するnativeScaleの解像度を決定できるように、APIがnativeBoundsCADisplayおよびUIScreen)に追加されました。

私のようなレガシーアプリがどのように扱われるのか不思議に思う人のために、私は主題に関して少しテストと計算をしました。

@ hannes-sverrissonのヒントのおかげで、私はレガシーアプリがiPhone 6とiPhone 6 plusでは320 x 568のビューで扱われるという前提から始めました。

テストは白い枠線のあるシンプルな黒い背景[email protected]で行われました。背景のサイズは640 x 1136ピクセルで、内側の白い枠線は1ピクセルです。

以下はシミュレータが提供するスクリーンショットです。

IPhone 6のスクリーンショットでは、白​​い枠の上下に1ピクセルの余白が、iPhone 6プラスのスクリーンショットでは2ピクセルの余白が見えます。これにより、iPhone 6 plusでは1242 x 2208ではなく1242 x 2204、iPhone 6では750 x 1334ではなく750 x 1332の used が得られます。

これらのデッドピクセルは、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

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

これが役に立つことを願っています。

13
François Verry

このインフォグラフィックをチェックしてください: 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

12
Darrarski

私が一般的にJohn GruberのDaring Fireballブログのトーンを好まないとしても、彼の より大きなiPhoneディスプレイ予想 は読む価値がある。

彼は推測したが 正確に 正しい両方のモデルの点とピクセルの両方の解像度を得た。トミーの答え).

要するに、ピクセルという観点から考えるのをやめて、ポイントという観点から考え始めるべきだということです(これはかなり以前から当てはまりますが、最近の発明ではありません)。要するに、物理的にほとんどの要素が同じサイズのままであるため、この点で両方の新しいiPhoneモデルが改善されています。

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

4
rawpower