ios - 解像度 - xcode beta 5




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

iPhone 6+は、 2208×1242 736x414 ポイント)の仮想解像度で @ 3x アセットを使用して内部的にレンダリングし、それをサンプリングして表示します。 Retina MacBookでスケーリングされた解像度を使用するのと同じです。たとえば、12 ptのテキストを画面上で同じサイズに見せながら、ピクセルアセットの整数倍にヒットできます。

したがって、はい、起動画面はそのサイズである必要があります。

数学:

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

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

実際には、Appleは87%のように進み、1080を1242に変更することを決定しました。それは、842に可能な限り近いものを見つけることでした。 、1080をたとえば1286にした場合、うまく拡大するには2286.22ピクセルを垂直にレンダリングする必要があります。

AppleのWebサイトは、解像度が1080p:1920 x 1080であると主張しています

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

誰が正しい?


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

  • Xcode 6 で、 File ]メニューを開き、 File New ]⟶ File... ]⟶ File... iOSUser InterfaceUser Interface Launch Screen ]を選択します。

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

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

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

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

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


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

@ hannes-sverrissonのヒントのおかげで、iPhone 6およびiPhone 6 plusでは、レガシーアプリが320x568ビューで処理されるという前提から始めました。

テストは、白い境界線を持つシンプルな黒い背景 [email protected] で行われました。 背景のサイズは640x1136ピクセルで、内部の白い境界線が1ピクセルの黒です。

以下は、シミュレーターによって提供されるスクリーンショットです。

iPhone 6のスクリーンショットでは、白​​い境界線の上下に1ピクセルのマージンがあり、iPhone 6とスクリーンショットでは2ピクセルのマージンがあります。 これにより、iPhone 6では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)。 これは、スケーリングが幅と高さで比例しないが、ピクセル/ポイント比を使用するという上記の理論を確認する傾向があります。

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


実際の/物理的な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ディスプレイ予想 は読む価値があります。

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

その要点は、ピクセルの観点から考えるのをやめ、ポイントの観点から考えることを始めなければならないということです(これはかなり以前からありましたが、最近の発明ではありません)。 要するに、物理的にほとんどの要素が同じサイズのままであるため、両方の新しいiPhoneモデルはこの点で改善され、画面上にそれらの多くをちょうどフィットさせることができます(より大きなスクリーンごとに、よりフィットすることができます)。

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


答えは、古いアプリは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 iPhone 6 750 x 1334 これは、質問で言及された混乱を引き起こしています。 新しい携帯電話の全画面サイズを使用するアプリを構築するには、1125 x 2436、1242 x 2208、2208 x 1242、750 x 1334のサイズのLaunchImagesを追加します。

新しいiPhone 11、11 Pro、11 Pro Max向けに更新

@ 3x スケーリング、座標空間を備えた iPhone 11 Pro Maxの サイズ: 414 x 896 ポイント、 1242 x 2688 ピクセル、458 ppi、デバイスの物理サイズは3.06 x 6.22インチまたは77.8 x 158.0 mmです。 6.5インチSuper Retina XDRディスプレイ。

@ 3x スケーリング、座標空間の iPhone 11 Proの サイズ: 375 x 812 ポイント、 1125 x 2436 ピクセル、458 ppi、デバイスの物理サイズは2.81 x 5.67インチまたは71.4 x 144.0 mmです。 5.8インチSuper Retina XDRディスプレイ。

@ 2x スケーリング、座標空間を備えた iPhone 11の サイズ: 414 x 896 ポイント、 828 x 1792 ピクセル、326 ppi、デバイスの物理サイズは2.98 x 5.94インチまたは75.7 x 150.9 mmです。 6.1 "Liquid Retina HDディスプレイ。

iPhoneX🅂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ですんん。

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

@ 2x スケーリング(Apple名: Super Retina HD 6.1 "display )を 使用 した iPhoneX🅁の サイズ、座標空間: 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

@ 3x スケーリングの iPhoneX🅂 および iPhone Xの サイズ(Apple名: Super Retina HD 5.8 インチ ディスプレイ )、座標空間: 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

@ 3x スケーリング(Apple名: Retina HD 5.5 )を使用した iPhone 6、6S、7、および8の サイズ、座標空間: 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

@ 2xスケーリング(Apple名: Retina HD 4.7 )を使用した iPhone 6 および iPhone 6Sの サイズ、座標空間: 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 モードでは、 nativeScalescale は同じではありません。 実際のデバイスでは、ズームモードで実行されていない場合でも、iPhone 6 Plusではスケールは2.608になりますが、シミュレータで実行するとスケールは3.0になります。







iphone-6-plus