web-dev-qa-db-ja.com

iPhone 6/6 Plusランドスケープ専用アプリの起動画像を作成するにはどうすればよいですか?

IPhone 6/iPhone 6 Plusサポートを追加しようとしている既存のランドスケープ専用アプリがあります。 iOS 6/7をサポートしていたとき、デフォルトの名前の起動ポートレート画像を使用し、横向き画像を縦向きに回転させました(4インチ画面の場合は横向き1136x640を作成し、回転して640×1136起動画像を作成しました)。

IOS 8とiPhone 6/6 +で動作するものを取得しようとしていますが、まだ動作するものを思いつきません。ここに私が試したものがいくつかあります:

  1. 4インチの画面起動イメージ規則のパターンに従います。Default-667h@ 2x.pngおよび[email protected]イメージを作成しました。これにより、シミュレーターが適切なiPhone 6/6 +解像度で実行されるようになりましたが、私が作成した新しいものではなく、4インチの画面起動イメージが使用されます。
  2. アセットカタログを使用する-LaunchImagesアセットでiPhone 6およびiPhone 6 Plusのポートレート起動画像を作成し、iPhone 6 Plusのランドスケープ起動画像を作成します。 iPhone 6 Plusは動作しますが、iPhone 6には黒い画面しか表示されません。 (アセットカタログにiPhone 6ランドスケープローンチ画像を作成する方法はありません)
  3. Info.plistでUILaunchImages配列をすべての画面サイズのエントリで指定します(参照 https://developer.Apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//を参照してくださいApple_ref/doc/uid/TP40009252-SW28 )。ここでアセットカタログと同様の結果が得られます。 iPhone 6 Plusのランドスケープは機能しますが、iPhone 6のランドスケープは機能しません。
60
Alex Argo

IOS 8 GMでのみランドスケープ起動画像が機能するようにする回避策を見つけました。最終的にInfo.plistのUILaunchImages配列を使用しました。トリックは、重複するエントリを指定する必要があるランドスケープ(iPhone 4/4S、iPhone 5/5S/5C、iPhone 6)を明示的にサポートしていない画像を表示することです。以下の例を参照してください。これは、iPadの両方の方向をサポートするランドスケープ専用の電話アプリ用です。 iOS 7はデフォルトの画像名にフォールバックします。

すべてのiPhone起動画像は、iPhone 6 Plus起動画像を除き、通常どおり縦向きに回転する必要があります。横向きの起動画像をネイティブでサポートしているため、横向きの起動画像のままにしておく必要があります。

Info.plistの関連ビットを次に示します。

<key>UILaunchImages</key>
<array>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default</string>
        <key>UILaunchImageOrientation</key>
        <string>Portrait</string>
        <key>UILaunchImageSize</key>
        <string>{320, 480}</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default</string>
        <key>UILaunchImageOrientation</key>
        <string>Landscape</string>
        <key>UILaunchImageSize</key>
        <string>{320, 480}</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default-568h</string>
        <key>UILaunchImageOrientation</key>
        <string>Portrait</string>
        <key>UILaunchImageSize</key>
        <string>{320, 568}</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default-568h</string>
        <key>UILaunchImageOrientation</key>
        <string>Landscape</string>
        <key>UILaunchImageSize</key>
        <string>{320, 568}</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default-667h</string>
        <key>UILaunchImageOrientation</key>
        <string>Portrait</string>
        <key>UILaunchImageSize</key>
        <string>{375, 667}</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default-667h</string>
        <key>UILaunchImageOrientation</key>
        <string>Landscape</string>
        <key>UILaunchImageSize</key>
        <string>{375, 667}</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default-736h</string>
        <key>UILaunchImageOrientation</key>
        <string>Portrait</string>
        <key>UILaunchImageSize</key>
        <string>{414, 736}</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default-736h</string>
        <key>UILaunchImageOrientation</key>
        <string>Landscape</string>
        <key>UILaunchImageSize</key>
        <string>{414, 736}</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default-Portrait</string>
        <key>UILaunchImageOrientation</key>
        <string>Portrait</string>
        <key>UILaunchImageSize</key>
        <string>{768, 1024}</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default-Landscape</string>
        <key>UILaunchImageOrientation</key>
        <string>Landscape</string>
        <key>UILaunchImageSize</key>
        <string>{768, 1024}</string>
    </dict>
</array>
75
Alex Argo

IPhone 6などのパターンが変更されました

iPhone 6(750x1334):

Default-375w-667h@2x~iphone.png

iPhone 6 Plus:(1242x2208

Default-414w-736h@3x~iphone.png

[email protected](風景用)

IPadをサポートしている場合は、iPadのデフォルト画像の名前を変更して〜ipadを追加する必要があります。 Default-Portrait〜ipad.pngは、6 plusが3x画像をオーバーライドするため、それらをピックアップしないようにします。

61
malhal

次の手順は私のために働いた:

  1. 次の指名でプロジェクト(ルートディレクトリまたはリソースフォルダー)に画像を追加します(Portrait launchimagesで説明します):Default.png(3.5インチ)、Default-568h @ 2x.png(4インチ)、Default- [email protected](iPhone 6)、Default-736 @ 3x.png(iPhone 6plus)。
  2. ターゲット設定、[全般]タブの[アプリアイコンと起動画像]に移動し、[資産カタログを使用しないように画像ソースを起動する]を設定します(「資産カタログを使用しない」)。
  3. メイン画像アセットからLaunchImageアセットを削除します
  4. [全般]タブでターゲット設定の[アプリアイコンと起動画像]に移動し、[資産カタログを使用するように画像ソースを起動する]を設定します。
  5. XCode 6は、既存のイメージからのイメージ資産の移行について尋ねます。 [移行]をクリックします。

そして、それはiOS7、iOS8のデバイスの種類ごとに機能しました。注:新しいLaunchImageアセットを確認すると、本当に奇妙なことがわかります。 iPhone6またはiPhone 6plusの解像度の画像を含まない少数の画像のみが含まれているようです。

14
ingaham

Images.xcassetsのみを使用している場合、「スクリーンファイルの起動」は空である必要があります。助けてくれました。

"Launch screen file" is empty

11
Nadzeya

iPhone 6の場合:

ポートレートでは750 x 1334(@ 2x)
横向きの場合は1334 x 750(@ 2x)

iPhone 6 Plusの場合:

ポートレートの場合、1242 x 2208(@ 3x)
2208 x 1242(@ 3x)横向き

または、このリンクをたどることができます

http://matthewpalmer.net/blog/2014/09/10/iphone-6-plus-launch-image-adaptive-mode/

11
Amit Saini

これは@AlexArgoの回答のフォローアップで、ランドスケープのみのiOS 9対応アプリがiOS 9 iPhoneで適切な起動画像を表示するように拡張します。その答えと同様に、資産カタログ、ストーリーボード、またはxibは必要ありません。

これらの追加なしでは、iOS 9 iPhoneでランドスケープ専用アプリを起動すると、iOS 8と同じ画像が表示されますが、画像は時計回りに90度回転し、反対方向の寸法に引き伸ばされることで歪むという動作が見られました。

プレフィックスiOS 9 iPhone起動画面: Pre-Fix iOS 9 iPhone Launch Screen

このソリューションには2つの部分があります。

  1. 以下のiOS 9アイテムをInfo.plistUILaunchImages配列@ AlexArgoの回答からのiOS 8アイテムの前に追加します。
  2. 以下のiOS 9アイテムで参照されている新しい起動画像(例:Default-iOS9-568h)をアプリに追加します。新しい起動画像はactual「ランドスケープ」-方向画像(背が高いよりも幅が広い)、開始した@AlexArgoのiOS 8アイテムが参照する画像とは異なります横向きの画像として表示されますが、アプリに追加される前に縦向きに回転されました。このソリューションがiOS 8と9で同時に動作するには、両方の画像セットがアプリに残っている必要があることに注意してください。

    <key>UILaunchImages</key>
    <array>
        <dict>
            <key>UILaunchImageMinimumOSVersion</key>
            <string>9.0</string>
            <key>UILaunchImageName</key>
            <string>Default-iOS9</string>
            <key>UILaunchImageOrientation</key>
            <string>Landscape</string>
            <key>UILaunchImageSize</key>
            <string>{320, 480}</string>
        </dict>
        <dict>
            <key>UILaunchImageMinimumOSVersion</key>
            <string>9.0</string>
            <key>UILaunchImageName</key>
            <string>Default-iOS9-568h</string>
            <key>UILaunchImageOrientation</key>
            <string>Landscape</string>
            <key>UILaunchImageSize</key>
            <string>{320, 568}</string>
        </dict>
        <dict>
            <key>UILaunchImageMinimumOSVersion</key>
            <string>9.0</string>
            <key>UILaunchImageName</key>
            <string>Default-iOS9-667h</string>
            <key>UILaunchImageOrientation</key>
            <string>Landscape</string>
            <key>UILaunchImageSize</key>
            <string>{375, 667}</string>
        </dict>
        ...(pre-iOS 9 items)...
    </array>
    

修正後のiOS 9 iPhone起動画面: enter image description here

4
janoside

IPad(ランドスケープおよびポートレートモード)を使用するには、info.plistにILaunchImages〜ipadキーを追加する必要があります。

<key>UILaunchImages~ipad</key>
    <array>
        <dict>
            <key>UILaunchImageMinimumOSVersion</key>
            <string>7.0</string>
            <key>UILaunchImageName</key>
            <string>Default-Landscape</string>
            <key>UILaunchImageOrientation</key>
            <string>Landscape</string>
            <key>UILaunchImageSize</key>
            <string>{768, 1024}</string>
        </dict>
        <dict>
            <key>UILaunchImageMinimumOSVersion</key>
            <string>7.0</string>
            <key>UILaunchImageName</key>
            <string>Default-Portrait</string>
            <key>UILaunchImageOrientation</key>
            <string>Portrait</string>
            <key>UILaunchImageSize</key>
            <string>{768, 1024}</string>
        </dict>
        <dict>
            <key>UILaunchImageMinimumOSVersion</key>
            <string>7.0</string>
            <key>UILaunchImageName</key>
            <string>Default-Landscape</string>
            <key>UILaunchImageOrientation</key>
            <string>Landscape</string>
            <key>UILaunchImageSize</key>
            <string>{748, 1024}</string>
        </dict>
        <dict>
            <key>UILaunchImageMinimumOSVersion</key>
            <string>7.0</string>
            <key>UILaunchImageName</key>
            <string>Default-Portrait</string>
            <key>UILaunchImageOrientation</key>
            <string>Portrait</string>
            <key>UILaunchImageSize</key>
            <string>{768, 1004}</string>
        </dict>
    </array>
2
Myrddin

私がやったことは、起動イメージにアセットカタログを使用しないようにプロジェクトを変更し、iOS7以前の古い手法を使用することです。これにより、iOS7以前で動作する起動イメージが取得されます。

正しい解像度を取得し、新しいiPhone 6/+向けにビルドされたアプリを認識できるように、iOS8でも機能させるには、新しいLaunchImage XIBを作成し、Xcodeにそれを使用するように指示する必要があります。

IOS8デバイスでアプリを起動すると新しいXIBテクニックが使用され、iOS7以前のデバイスでアプリを起動すると、あなたが知って愛するようになった画像が使用されます。

私にとってこれはうまくいくようです。 MOいIMOですが、動作します。

これが一部の人々に役立つことを願っています。

1
PKCLsoft

プラスを除くすべてのiPhoneには、横向き専用アプリ用の個別の起動画面はありません。 Deeplistで説明したようにplistで方向を設定してから、portrait起動画面を横向き起動画面の回転バージョンに設定します。

これは常にそうであり、変更された唯一のことは、プラスが個別の異なるランドスケープ起動画面をサポートするようになったことです。他のすべてのデバイスは、アプリの開始方向に関係なく、ポートレート起動画面のみをサポートします。

1
nheagy

[email protected]を追加するだけで、Landscapeでも修正されます。また、iPhone 6およびiPhone 6 Plus用のランドスケープ専用アプリもありますが、問題なく動作します!

0
wagashi